1.忽略返回值
這個應該是最簡單的用途,比如某個函式返回三個引數,但是我們只需要其中的兩個,另外乙個引數可以忽略,這樣的話**可以這樣寫:
v1, v2, _ := function(...)
2.用在變數(特別是介面斷言)
例如我們定義了乙個介面(inte***ce):
type
foo inte***ce
然後定義了乙個結構體(struct)
type
dog struct
然後我們希望在**中判斷dog這個struct是否實現了foo這個inte***ce
var _ foo =dog{}
上面用來判斷dog是否實現了foo, 用作型別斷言,如果dog沒有實現foo,則會報編譯錯誤
3.用在import package
假設我們在**的import中這樣引入package:
import _ "test/foo"
這表示呢在執行本段**之前會先呼叫test/foo中的初始化函式(init),這種使用方式僅讓匯入的包做初始化,而不使用包中其他功能
例如我們定義了乙個foo struct,然後對它進行初始化
package foo
import
"fmt"
type foo struct
func init()
fmt.printf("init foo object: %v\n", f)
}
然後在main函式裡面引入test/foo
package main
import
( "fmt"
_"test/foo"
)func
main
()
執行結果如下
init foo object: &
hello world
我們可以看到:在main函式輸出」hello world」之前就已經對foo物件進行初始化了!
end
關於golang中下劃線 的語義說明
在閱讀k8s 的過程中,經常可以看到下劃線出現在不同的地方,有時候我們並不清楚下劃線代表的具體含義是什麼,有什麼作用,但是又會經常選擇性的忽略這些細節,實際上卻非常重要。下面我來總結一下下劃線 出現的三種場合 這個應該是最簡單的用途,比如某個函式返回三個引數,但是我們只需要其中的兩個,另外乙個引數可...
python命名之下劃線
1 單前導下劃線 var 單個下劃線是乙個python命名約定,表示這個名稱是供內部使用的。它通常不由python直譯器強制執行,僅僅作為一種對程式設計師的提示。2 單末尾下劃線var 有時候,乙個變數的最合適的名稱已經被乙個關鍵字所占用。因此,像class或def這樣的名稱不能用作python中的...
golang下劃線 underscore 總結
可以簡單理解為賦值但以後不再使用,在golang中使用的比較多,使用的場合也很多,稍作總結 引入包,會呼叫包中的初始化函式,這種使用方式僅讓匯入的包做初始化,而不適用包中其他功能 2 用在返回值 1 for v range slice 2 err func 表示忽略某個值。單函式有多個返回值,用來獲...