go學習筆記-基礎型別
阿新 • • 發佈:2018-11-09
基礎型別
布林值
布林值的型別為bool,值是true或false,預設為false。
//示例程式碼
var isActive bool // 全域性變數宣告
var enabled, disabled = true, false // 忽略型別的宣告
func testBool() {
var available bool // 一般宣告
valid := false // 簡短宣告
available = true // 賦值操作
}
數值型別
整數型別有無符號和帶符號兩種。Go同時支援int和uint,這兩種型別的長度相同,但具體長度取決於不同編譯器的實現。Go裡面也有直接定義好位數的型別:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64。其中rune是int32的別稱,byte是uint8的別稱。
需要注意的一點是,這些型別的變數之間不允許互相賦值或操作,不然會在編譯時引起編譯器報錯。
var a int8 = 1
浮點數的型別有float32和float64兩種,預設是float64。
var b float32 = 4.67890
Go還支援複數。它的預設型別是complex128(64位實數+64位虛數)。如果需要小一些的,也有complex64(32位實數+32位虛數)。複數的形式為RE + IMi,其中RE是實數部分,IM是虛數部分,而最後的i是虛數單位。
var c complex64 = 5+5i
字串
字串是用一對雙引號("")或反引號(``)括起來定義,反引號括起的字串為Raw字串,它的型別是string。
//示例程式碼
var frenchHello string // 宣告變數為字串的一般方法
var emptyString string = "" // 聲明瞭一個字串變數,初始化為空字串
func testString() {
a := "abc"
b := `demo <>`
}
字串是不可變的,例如下面的程式碼編譯時會報錯:cannot assign to s[0]
var s string = "hello"
s[0] = 'c'
但如果真的想要修改怎麼辦呢?下面的程式碼可以實現:
s := "hello" c := []byte(s) // 將字串 s 轉換為 []byte 型別 c[0] = 'c' s2 := string(c) // 再轉換回 string 型別
可以使用+操作符來連線兩個字串:
s := "hello,"
m := " world"
a := s + m
錯誤型別
Go內建有一個error型別,專門用來處理錯誤資訊,Go的package裡面還專門有一個包errors來處理錯誤:
func testError() {
err := errors.New("fatal error")
fmt.Println(err)
}
零值
關於“零值”,所指並非是空值,而是一種“變數未填充前”的預設值,通常為0。 此處羅列 部分型別 的 “零值”
int 0
int8 0
int32 0
int64 0
uint 0x0
rune 0 //rune的實際型別是 int32
byte 0x0 // byte的實際型別是 uint8
float32 0 //長度為 4 byte
float64 0 //長度為 8 byte
bool false
string ""