這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Boolean
布爾值的類型為bool,true或false,預設false
var isActive bool // 全域變數聲明 var enabled, disabled = true, false // 忽略類型的聲明 func test() { var available bool // 一般聲明 valid := false // 簡短聲明 available = true // 賦值操作 }
數實值型別
整數類型
整數類型有無符號和帶符號兩種。Go同時支援int和uint,這兩種類型的長度相同,但具體長度取決於不同編譯器的實現。
Go裡面也有直接定義好位元的類型:
rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64。
整數
- int8(-128 -> 127)
- int16(-32768 -> 32767)
- int32(-2,147,483,648 -> 2,147,483,647)
- int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
不帶正負號的整數:
- uint8(0 -> 255)
- uint16(0 -> 65,535)
- uint32(0 -> 4,294,967,295)
- uint64(0 -> 18,446,744,073,709,551,615)
其中rune是int32的別稱byte是uint8的別稱
浮點數
浮點數的類型有float32和float64兩種(沒有float類型),預設是float64。(IEEE-754 標準)
應儘可能地使用 float64,因為 math 包中所有有關數學運算的函數都會要求接收這個類型。
- float32(+- 1e-45 -> +- 3.4 * 1e38)
- float64(+- 5 1e-324 -> 107 1e308)
複數
預設類型是complex128(64位實數+64位虛數)。如果需要小一些的,也有complex64(32位實數+32位虛數)。
複數的形式為RE + IMi,其中RE是實數部分,IM是虛數部分,而最後的i是虛數單位。
var c1 complex64 = 5 + 10ifmt.Printf("The value is: %v", c1)// 輸出: 5 + 10i
格式化說明符
在格式化字串裡,
%d 用于格式化整數(%x 和 %X 用于格式化 16 進位表示的數字),
%g 用于格式化浮點型(%f 輸出浮點數,%e 輸出科學計數標記法),
%0d 用於規定輸出定長的整數,其中開頭的數字 0 是必須的。
%n.mg 用於表示數字 n 並精確到小數點後 m 位,除了使用 g 之外,還可以使用 e 或者 f,例如:使用格式化字串 %5.2e 來輸出 3.4 的結果為 3.40e+00。
字串 string
字串就是一串固定長度的字元串連起來的字元序列。Go的字串是由單個位元組串連起來的。也就是說對於傳統的字串是由字元組成的,而Go的字串不同,它是由位元組組成的。
Go語言的字串的位元組使用UTF-8編碼標識Unicode文本。
字串的表示很簡單,用雙引號("")或者反引號(``)來建立.例如:"hello world" 或者 'hello world'。
兩者的區別:
雙引號之間的轉義符會被轉義,而反引號之間的字元保持不變。
//範例程式碼 var frenchHello string // 聲明變數為字串的一般方法 var emptyString string = "" // 聲明了一個字串變數,初始化為空白字串 func test() { no, yes, maybe := "no", "yes", "maybe" // 簡短聲明,同時聲明多個變數 japaneseHello := "Konichiwa" // 同上 frenchHello = "Bonjour" // 常規賦值 }
s := "hello"c := []byte(s) // 將字串 s 轉換為 []byte 類型c[0] = 'c's2 := string(c) // 再轉換回 string 類型fmt.Printf("%s\n", s2)