golang之下劃線 之語義說明

2021-08-08 04:38:41 字數 1195 閱讀 4249

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 表示忽略某個值。單函式有多個返回值,用來獲...