理解Go 中...interface{} 的意思
Go 中,以三個點為前綴的參數類型(.. . ) 被稱為可變參數。這意味著函數可以接受該特定參數的任意數量的實參。
考慮以下函數:
func DPrintf(format string, a ...interface{}) (n int, err error) { if Debug > 0 { n, err = fmt.Printf(format, a...) } return }
參數 a 的類型為 ...interface{},表示它可以接受零個或多個任何類型的參數。然後,函數將這些參數作為為參數宣告的類型的切片來接收,在本例中為 []interface{}。
Go 規範提供了以下解釋:
「函數簽章中的最終參數可能具有以...為前綴的類型。具有此類參數的函數稱為可變參數,並且可以使用零個或多個參數來呼叫該函數參數。差別在於如何將參數傳遞給函數。它們可以單獨傳遞,也可以作為單一切片傳遞,在這種情況下,切片值必須以三個點 (...) 為後綴。
例如,以下對fmt.Println 函數的兩個呼叫將產生相同的結果:
fmt.Println("First", "Second", "Third")
s := []interface{}{"First", "Second", "Third"} fmt.Println(s...)
此機制透過允許函數接受可變數量的參數來提供靈活性,使它們更加通用和可重複使用。
以上是Go 可變參數函數中的「...interface{}」是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!