Go 和你所知道的大多數語言相同,會有各種型態,如果你有學過 C 語言,這邊你可以很輕鬆的看過去,而且你會發現它跟 C 語言有許多相似之處,Go 之所以被稱為「21 世紀 C 語言不是沒有原因」,另外如果沒有學過,也別擔心,它沒有很困難,那就讓我們來認識看看有哪些型態:
數字
整數的型態很多種,以下表格是 Go 語言擁有的整數型態,以及它的範圍。
在這邊無法使用表格,用圖片代替,另外補充可能被蓋掉的文字「32 位元平台 4 位元,64 位元平台 8 位元 」。
範例
package main
import "fmt"
func main() {
fmt.Println("1 + 1 =", 1 + 1)
}
http://play.golang.org/p/N0XKLexlwp
#表格參考資料 Go 語言編程 2.3 節 變量 人民郵電出版社
浮點數
複數包涵兩種型態 float32、float64。
與其他語言相同, Go 當然也可以用浮點數。
要注意的是,如果初始化的時候沒有加小數點會被推斷為整數,另外初始化的時候沒有指定型態的話,會被自動推斷為 float64。
float64 在 Go 語言相當於 C 語言的 Double,且 float32 與 float64 是無法一起計算的,需要強制轉型。
範例
package main
import "fmt"
func main() {
var floatValue float64
floatValue = 7.0
var floatValue2 = 3.0
fmt.Println("7.0/3.0 =", floatValue/floatValue2)
var test float64
var test2 float32
test = 1.1
test2 = 2.2
fmt.Println("test + test2 =", float32(test) + test2)
}
http://play.golang.org/p/PIB7YTp_Wb
複數
複數包涵兩種型態 complex64、complex128。
我覺得算是 Go 的特色之一,其他語言很少有這種型態,一個完整的複數需要包涵實數、虛數。
如果是初始化讓 Go 自動判斷型態的型態會是 complex128,而不會是 complex64
範例
package main
import "fmt"
func main() {
var complexValue complex64
complexValue = 1.2 + 12i
complexValue2 := 1.2 + 12i
complexValue3 := complex(3.2, 12)
fmt.Println("complexValue =", complexValue)
fmt.Println("complexValue2 =", complexValue2)
fmt.Println("complexValue3 =", complexValue3)
fmt.Println("complexValue3 實數 =", real(complexValue3))
fmt.Println("complexValue3 虛數 =", imag(complexValue3))
}
http://play.golang.org/p/Srm2TkMzRo
字串
請注意字串型態無法在初始化後被修改。
範例
package main
import "fmt"
func main() {
fmt.Println("1" + "1")
fmt.Println(len("Hello World"))
fmt.Println("Hello World"[1])
fmt.Println("Hello" + "World")
a := "Hello World"
fmt.Printf("%c",a[1])
}
http://play.golang.org/p/v3TYS_t8VZ
布林
Go 語言中的布林與其他語言一致,關鍵字一樣是 bool ,可欲賦予值為 true 和 false。
範例
package main
import "fmt"
func main() {
var a bool
a = true
fmt.Println("a =", a)
b := false
fmt.Println("b =", b)
fmt.Println(true && true)
fmt.Println(true && false)
fmt.Println(true || true)
fmt.Println(true || false)
fmt.Println(!true)
}
http://play.golang.org/p/8BVcSKCdJL