在 Go 中,函數簽章中缺少參數名稱可能看起來令人費解。然而,匿名參數在 Go 程式語言中具有特定的用途。
Go 中參數聲明的規格明確指出識別符清單(包含參數名稱)是可選的,而類型是強制性的。這意味著未命名參數在語法上是有效的構造。
使用未命名參數的原因
當參數因技術原因出現在函數簽章中時,使用未命名參數,但不打算在函數內引用。這可能發生在各種場景中:
範例:丟棄資料
考慮以下範例:
type DiscardWriter struct{} func (DiscardWriter) Write([]byte) error { return nil }
此DiscardWriter 類型實作了io.Writer介面一個接受位元組切片參數的Write 方法。然而,DiscardWriter 不使用參數值;它只是傳回一個錯誤。在這種情況下,參數是未命名的,因為不需要它。
混合參數
需要注意的是,Go 不允許混合命名和未命名參數。如果命名了一個參數,則必須命名所有參數。空白標識符可以用來表示不使用的參數,如下例所示:
http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) { io.WriteString(w, "Hello") })
這種情況下,請求結構沒有被利用,所以使用空白標識符「_」作為其name.
結論
Go 中的未命名參數透過允許參數包含在函數簽名而不命名它們。這對於實作介面、維護相容性以及指示未使用或引用參數非常有用。
以上是為什麼在 Go 函數中使用未命名參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!