Avatar ·

Go中接口切片类型转换:为什么这不起作用?

大家好!我是Go新手,一直搞不懂接口切片的类型转换。我有一个函数接受 `[]interface{}`,但我想传递一个具体类型的切片,比如 `[]string`。为什么Go不允许直接这样做? 以下是我无法正常工作的示例代码: ```go package main import "fmt" func printAll(items []interface{}) { for _, item := range items { fmt.Println(item) } } func main() { names := []string{"Alice", "Bob", "Charlie"} // 错误:cannot use names (type []string) as type []interface{} in argument to printAll printAll(names) } ``` 我知道 `string` 实现了 `interface{}` 接口,但为什么 `[]string` 不能用作 `[]interface{}`?文档中提到了协变性,但我不太理解如何在实际中应用。我需要将不同类型的切片传递给同一个函数。如何正确解决这个问题?也许需要使用...