Golang 零值、空值與空結(jié)構(gòu)的使用小結(jié)
零值
- 對于值類型:布爾類型為
false, 數(shù)值類型為0,字符串為"",數(shù)組和結(jié)構(gòu)會遞歸初始化其元素或字段,即其初始值取決于元素或字段。 - 對于引用類型: 均為 nil,包括指針 pointer,函數(shù) function,接口 interface,切片 slice,管道 channel,映射 map。
nil
空值(nil) :在Go語言中,nil是一個預定義的標識符,用于表示指針、通道(channel)、映射(map)、切片(slice)、函數(shù)以及接口類型的“零值”。它相當于這些類型的“無”或“不存在”。例如,一個nil指針不指向任何內(nèi)存地址,而一個nil通道不連接任何發(fā)送者或接收者。
- 初始化未使用的指針或引用類型變量。
- 檢查一個變量是否已被初始化或有效。
- 在錯誤處理中,表示一個操作沒有返回錯誤。
空結(jié)構(gòu)
作用二
使用 chan struct{} 代替 chan bool 在 goroutines 之間傳遞信號。使用 bool 容易讓人不理解該值,true or false,但是使用 chan struct{} 就很清楚,我們不在乎值,只關(guān)心發(fā)生的事兒,更容易表達清楚一些。
作用一
用來強制使用字段名來初始化結(jié)構(gòu)體,防止未命名的初始化方式。
正常的結(jié)構(gòu)體
type Q struct {
X, Y int
}
// 兩種初始化方式都可以
q1 := Q{X: 1, Y: 1} // 推薦:使用字段名
q2 := Q{1, 1} // 不推薦:按位置初始化
添加 _ struct{} 后的結(jié)構(gòu)體
type Q struct {
X, Y int
_ struct{} // 添加這個字段
}
// 現(xiàn)在只能這樣初始化
q1 := Q{X: 1, Y: 1} // ? 編譯通過
// 這樣會報錯
q2 := Q{1, 1} // ? 編譯錯誤:too few values in struct initializer
到此這篇關(guān)于Golang 零值、空值與空結(jié)構(gòu)的使用小結(jié)的文章就介紹到這了,更多相關(guān)Golang 零值、空值與空結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang 語言極簡類型轉(zhuǎn)換庫cast的使用詳解
本文我們通過 cast.ToString() 函數(shù)的使用,簡單介紹了cast 的使用方法,除此之外,它還支持很多其他類型,在這沒有多多介紹,對Golang 類型轉(zhuǎn)換庫 cast相關(guān)知識感興趣的朋友一起看看吧2021-11-11

