空白符(blank identifier)
空白符的產(chǎn)生可能是因為go不允許變量聲明了但不使用。既然不想使用,何必聲明變量呢,那就將變量用空白符代替,反正空白符就是用來拋棄的。
我們有時候看到這樣的golang代碼:
import _ "net/http/pprof"
或
for _, c := range "11234" { log.Println(c) }
或
var _ io.Reader = (* XXX)(nil) //全局變量
或
var _ = Suite(HelloWorldTest{})
代碼中_很獨特的樣子:說是變量吧,但它在同一作用域可以多次被定義;說是類型吧,寫法上又不像。
那它到底是何方神圣呢?
其實官方文檔有定義和介紹,它叫Black Identifier
,中文翻譯為空標識符。空標識符不是普通變量,而是語言提供的一種特殊處理,它能避免某個變量起名,同時也可以在賦值時舍棄某個值。
空標識符一般用于4種場合,正對應(yīng)上面例子的4段代碼。
1. 引入某包只執(zhí)行包中的init函數(shù),但本包沒有直接引用該包任何變量或函數(shù),使用import _避免編譯錯誤;
2. 函數(shù)有多返回值,忽略其中某些返回值。類似c++11 std::ignore在std::tie中的運用;
3. 編譯期檢查,比如某類型有沒有實現(xiàn)某接口的檢查;
4. 想在main之前執(zhí)行某段代碼,當然用init也可以。
示例 blank_identifier.go
package main import "fmt" func main() { var i1 int var f1 float32 i1, _, f1 = ThreeValues() fmt.Printf("The int: %d, the float: %f \n", i1, f1) } func ThreeValues() (int, int, float32) { return 5, 6, 7.5 }
輸出結(jié)果:
The int: 5, the float: 7.500000
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接