關於golang中下劃線 的語義說明

2021-09-23 18:02:20 字數 1131 閱讀 2255

在閱讀k8s**的過程中,經常可以看到下劃線出現在不同的地方,有時候我們並不清楚下劃線代表的具體含義是什麼,有什麼作用,但是又會經常選擇性的忽略這些細節,實際上卻非常重要。

下面我來總結一下下劃線(_)出現的三種場合

這個應該是最簡單的用途,比如某個函式返回三個引數,但是我們只需要其中的兩個,另外乙個引數可以忽略,這樣的話**可以這樣寫:

v1, v2, _ := function(...)
例如我們定義了乙個介面(inte***ce):

type foo inte***ce
然後定義了乙個結構體(struct)

type dog struct
然後我們希望在**中判斷dog這個struct是否實現了foo這個inte***ce

var _ foo = dog{}
上面用來判斷dog是否實現了foo, 用作型別斷言,如果dog沒有實現foo,則會報編譯錯誤

假設我們在**的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物件進行初始化了!

golang之下劃線 之語義說明

1.忽略返回值 這個應該是最簡單的用途,比如某個函式返回三個引數,但是我們只需要其中的兩個,另外乙個引數可以忽略,這樣的話 可以這樣寫 v1,v2,function 2.用在變數 特別是介面斷言 例如我們定義了乙個介面 inte ce type foo inte ce 然後定義了乙個結構體 stru...

Python中下劃線說明

在python中經常看到方法或者變數前帶有下劃線,稍作解釋。1.前後雙下劃線 mtthod 這一般是系統定義的特殊方法,類似於類的構造方法 init 2.前單下劃線 以單下劃線開頭的變數指的是變數的許可權型別為protected,即是保護許可權的變數,該型別的變數只能通過其本身及子類的例項物件能夠訪...

python中下劃線 的用途

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from module import 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開頭。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下劃線作為變數名的開頭。一般來講,...