空白符(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
,中文翻譯為空標識符??諛俗R符不是普通變量,而是語言提供的一種特殊處理,它能避免某個變量起名,同時也可以在賦值時舍棄某個值。
空標識符一般用于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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章:- go for range坑和閉包坑的分析
- strings命令分析淺談Go和C++編譯時的一點小區(qū)別
- go panic時如何讓函數(shù)返回數(shù)據(jù)?
- go代碼實現(xiàn)買房貸款月供計算的方法
- linux下搭建go環(huán)境的安裝配置講解
- 為什么Go語言把類型聲明放在后面?
- 用go gin server來做文件上傳服務(wù)
- 使用go gin來操作cookie的講解
- 在go中使用omitempty的代碼實例
- go for range遍歷二維數(shù)組的示例