golang的空標識符理解
空白符(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種場合,正對應上面例子的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)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
Golang實現(xiàn)協(xié)程超時控制的方式總結(jié)
我們知道,go協(xié)程如果不做好處理,很容易造成內(nèi)存泄漏,所以對goroutine做超時控制,才能有效避免這種情況發(fā)生,本文為大家整理了兩個常見的Golang超時控制方法,需要的可以收藏一下2023-05-05Go中g(shù)in框架的*gin.Context參數(shù)常見實用方法
*gin.Context是處理HTTP請求的核心,ctx代表"context"(上下文),它包含了處理請求所需的所有信息和方法,例如請求數(shù)據(jù)、響應構(gòu)建器、路由參數(shù)等,這篇文章主要介紹了Go中g(shù)in框架的*gin.Context參數(shù)常見實用方法,需要的朋友可以參考下2024-07-07