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中文網其他相關文章!