剛開始學Go時,一定會學到Go的各種型態,如string、int、struct等等,通常學習的書或文章會稍微的補充一下各個型態的零值,但因為我們剛學,加上看起來很自然(例如,int的零值是0,對阿,不然勒),所以很容易就忽略了,但隨著Go越寫越深,開始發現零值在Golang程式中是需要好好保握的一個東西,例如,當我們建立(new)一個struct的實例時,若沒有直接指定,裡面的變數都會預先設定為零值。因此這篇記錄一下Golang各型態的零值供我自己及讀者忘了時回來Check一下囉。
類型 | Golang Type Name | 零值 |
---|---|---|
字符 | byte, rune | 0 |
數字 | float32, float64, int, int8, int16, int32, int64, uint, unit8, uint16, uint32, uint64, complex64,complex128 | 0 |
布林 | bool | false |
字串 | string | “” |
slice | []Type | nil |
map | map[Type]Type | nil |
指針 | uintptr | nil |
函數 | func | nil |
interface | interface | nil |
channel | chan | nil |
所以不要再犯 variable string != nil 這種錯誤啦(跟我自己說)!