1. 程式人生 > >golang語言學習第二課:變數型別及常量與列舉

golang語言學習第二課:變數型別及常量與列舉

go語言的變數型別:

  • bool (true為0,false不等於0),
  • string 
  • int 分好多種int,有點頭暈,但用預設的int就足夠了,根據機器判斷,是32位的用int32,是64位的用int64.
  • byte, 又是uint8的別名。
  • rune(類似char,但是是utf-8編碼的char),又是int32的別名。
  • go語言沒有float,只有float32, float 64(即使在32位的架構上還是64位)
  • go語言原生支援複數型別,類似python, python也支援複數。go語言的複數型別有2種:complex64, complex128。一般程式其實很少用的上

 

golang型別轉換是強制的,不能隱式轉換。

go語言定義常量

定義常量: const 常量名, 資料型別(型別可省略,具體到用的時候golang可自動規定)

注意:const 後面的常量名在go語言可以不用大寫,在C裡強制要大寫的,go的大寫是有特殊含義的,並且大小寫是敏感的。

  function changliang ( ) {

  const (

    a, d = 3, 4  //常量可以規定型別,也可以不規定,不規定類似,型別是不確定的,此處a,d既可以做int任何一種型別, 又可以做float32, float64任何一種型別。

    b string ="hello"

  )       

  var c int

  c =  int ( math.Sqrt (a*a + b*b) )  //此處a,b型別為float64, 沒規定型別直接放進來,math.Sqrt函式裡是float64型別,就自動規定為float64型別。

  fmt.Println(c, b)

  }

列舉型別:

  const (

  python = iota  //從0開始自增,並且iota支援參加運算,具體看程式碼區域塊裡的程式碼

       _                 //golang特殊字元, 賦值後忽略 

  golang      // 值為2

       csharp     // 值為3

)

 

詳見程式碼:

package main

import (
    "fmt"
    "math"
)

func main() {
    consttest()
    constiota()
    changliang()
}
func changliang()  {
    const(
        a, d = 3, 4
        b string = "gooing"
    )
    var c int
    fmt.Println(a, b)
    c = int(math.Sqrt(a*a + d*d)) //此處a,d為float64型別
    fmt.Println(c)

}
func consttest()  {
    const (
        python = iota
        golang
        _
        cpp
        clang

    )
    fmt.Println(python,golang,cpp,clang )

}

func constiota()  {
    //Byte, KB,MB, GB,TB
    const(
        b =1 << (10 * iota)  //iota能夠參與運算
        kb
        mb
        gb
        tb

    )
    fmt.Println(b,kb,mb,gb,tb)
}