golang語言學習第二課:變數型別及常量與列舉
阿新 • • 發佈:2018-12-05
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) }