首頁 > 後端開發 > Golang > 為什麼我不能在 Go 的可變參數函數中混合'分解”切片和常規參數?

為什麼我不能在 Go 的可變參數函數中混合'分解”切片和常規參數?

Susan Sarandon
發布: 2024-12-17 19:13:19
原創
515 人瀏覽過

Why Can't I Mix

在可變參數函數中混合「爆炸」切片和常規參數

Go 不允許在可變參數函數中混合「爆炸」切片和常規參數。這在以下範例中很明顯:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // Error: too many arguments in call to foo
}

func foo(s ...string) {
    fmt.Println(s)
}
登入後複製

根據 Go 語言規範,可以透過兩種方式指定可變長度參數:枚舉元素或使用現有切片。不允許混合兩者。

枚舉元素時,會建立一個新切片,其中元素將成為可變參數的值。但是,當現有切片與...一起使用時,不會建立新切片,並且原始切片將成為可變參數。

同時傳遞單一元素和切片將導致類型不匹配,從而導致編譯器錯誤。混合這兩個選項需要分配一個新的切片,但 Go 不支援這種行為。

錯誤訊息「too much argument in call to foo」表示編譯器需要單一切片或元素列表,但不是兩者的組合。若要解決此問題,請刪除內容...或單獨列舉元素。

以上是為什麼我不能在 Go 的可變參數函數中混合'分解”切片和常規參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板