Go?中的空白標(biāo)識符下劃線
與 Python 一樣,Go 語言也有空白標(biāo)識符。
1.什么是空白標(biāo)識符
空白標(biāo)識符是未使用的值的占位符。它由下劃線(_)表示。由于空白標(biāo)識符沒有名稱,因此它們也被稱為匿名占位符。
在 Go 語言中, 不允許聲明未使用的變量或?qū)胝Z句。也就是說,我們無法聲明變量并將其留下未使用。同樣,如果您導(dǎo)入一個包,那么也必須使用它。
這個時候就需要一個空白標(biāo)識符。
2.未使用的賦值變量
如果 Go 中的函數(shù)返回多個值,則必須定義相等數(shù)量的變量來保存這些值。但是,如果您只需要其中一些值而不需要其他值,若某次賦值需要匹配多個左值,但其中某個變量不會被程序使用, 那么用空白標(biāo)識符來代替。該變量可避免創(chuàng)建無用的變量,并能清楚地表明該值將被丟棄。
如下所示:
result, error = Dosomething() if error { // handle error }
在上面的代碼中,??result?
? 與程序無關(guān),而且后續(xù)代碼也沒有使用它。如果編譯的話,Go 編譯器會報錯。
result declared but not used
在這種情況下,您可以將結(jié)果替換為下劃線或空白標(biāo)識符,
如下所示:
_, error = Dosomething() if error { // handle error }
即使您聲明了一個變量,您也可以稍后使用空白標(biāo)識符來忽略它,如下面的代碼所示:
product, error = Dosomething() if error { // handle error } // ignore unused variable _ = product
在 ??for...range?
? 中使用空白標(biāo)志符
func Sum(numbers []int) int { sum := 0 for _, number := range numbers { sum += number } return sum }
3.未知的結(jié)構(gòu)體
可以利用 ??_?
? 分配任何東西:
var _ I = T{}
無法訪問此變量,以便將從生成的程序中優(yōu)化。但是,如果 T 類型未分配給接口 ??I?
? ,則可能會導(dǎo)致編譯錯誤。因此,在這種情況下,它被用作關(guān)于類型的靜態(tài)斷言。
4.未使用的包
在 Go 中,如果你導(dǎo)入一個包,那么你必須使用它,否則會出現(xiàn)編譯器錯誤。
imported and not used “<package name>”
空白標(biāo)識符可用于解決此編譯器錯誤。
有兩種方法可以使用空白標(biāo)識符來解決未使用的包錯誤,如下所示:
第一種:聲明一個全局空白標(biāo)識符(在 ??main()?
? 函數(shù)之前),該標(biāo)識符從未使用的包中訪問符號,例如下面代碼中的 Open:
import "os" var _ = os.Open func main() { }
第二種:在未使用的包前加上一個空白標(biāo)識符,
如下所示:
import _ "os" func main(){ }
空白標(biāo)識符通過避免在整個代碼中使用未使用的變量聲明,使代碼更具可讀性。
5.總結(jié)
Golang 中任何聲明但未使用的包和變量都會引發(fā)錯誤。這一規(guī)則使得我們的代碼保持干凈和輕量。
- 有時如果需要在未來使用并提前導(dǎo)入一些軟件包,就可以使用空白標(biāo)識符。
- 有時候函數(shù)會返回多個參數(shù),但是我們只需要使用其中一個變量的時候,就可以通過空白標(biāo)志符來進(jìn)行接收。
到此這篇關(guān)于Go 中的空白標(biāo)識符下劃線的文章就介紹到這了,更多相關(guān)Go 空白標(biāo)識符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Gotorch多機(jī)定時任務(wù)管理系統(tǒng)
遵循著“學(xué)一門語言最好的方式是使用它”的理念,想著用Go來實現(xiàn)些什么,剛好有一個比較讓我煩惱的問題,于是用Go解決一下,即使不在生產(chǎn)環(huán)境使用,也可以作為Go語言學(xué)習(xí)的一種方式。2021-05-05go語言區(qū)塊鏈學(xué)習(xí)調(diào)用智能合約
這篇文章主要為大家介紹了go語言區(qū)塊鏈學(xué)習(xí)中如何調(diào)用智能合約的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)
很多朋友不知道如何使用Goland軟件,搭建一個ORM框架GORM,今天小編給大家分享一篇教程關(guān)于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2022-09-09go語言中sort包的實現(xiàn)方法與應(yīng)用詳解
golang中也實現(xiàn)了排序算法的包sort包,所以下面這篇文章主要給大家介紹了關(guān)于go語言中sort包的實現(xiàn)方法與應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11