2 回答

TA貢獻1864條經驗 獲得超6個贊
(_, _ <-chan interface{})
相當于(<-chan interface{}, <-chan interface{})
. 除了源代碼長度和可讀性之外,沒有區別。
(<-chan interface{}, <-chan interface{})
我們從返回值類型開始。由于返回值可以有名稱,因此可以寫入
(ch1 <-chan interface{}, ch2 <-chan interface{})
返回相同的 2 個通道。具有相同類型的參數序列(或返回值)可以省略除最后一個變量之外的所有變量的類型。因此我們的返回類型變成:
(ch1, ch2 <-chan interface{})
因為我們真的不需要返回值的名稱,我們可以用下劃線替換名稱,再次使它們匿名:
(_, _ <-chan interface{})
瞧!同一類型的可讀通道對。

TA貢獻1817條經驗 獲得超6個贊
這是func聲明
FunctionType = "func" Signature .
Signature = Parameters [ Result ] .
Result = Parameters | Type .
Parameters = "(" [ ParameterList [ "," ] ] ")" .
ParameterList = ParameterDecl { "," ParameterDecl } .
ParameterDecl = [ IdentifierList ] [ "..." ] Type .
如您所見, theResult就像方法的參數 a Parameters,后者又歸結為IdentifierList. 出現了空白標識符_,可以替換IdentifierList.
原作者將此與“聲明為同一類型的多個標識符”語法一起使用,以產生 - 正如已經提到的 - 一種奇怪的閱讀聲明,其中包含兩個相同類型的返回值。
請參閱https://golang.org/ref/spec#Function_declarations
您還可以通過使用空白標識符來實現“刪除”參數的功能。當您不需要您實現的接口的參數時,可能會派上用場。
func foo(a string, _ int, b string) { ... }
第二個參數不可用。
- 2 回答
- 0 關注
- 125 瀏覽
添加回答
舉報