Go中接口切片类型转换:如何将[]interface{}转换为[]string?
大家好!我是Go新手,遇到了一个让我觉得很奇怪的问题。我有一个函数接收`[]interface{}`(接口切片),但我需要将它传递给另一个期望`[]string`的函数。我尝试进行简单的类型转换,但编译器报错了。
以下是示例代码:
```go
package main
import "fmt"
func printStrings(strings []string) {
for _, s := range strings {
fmt.Println(s)
}
}
func main() {
var data []interface{} = []interface{}{"hello", "world", "golang"}
// 错误:cannot use data (type []interface{}) as type []string in argument to printStrings
printStrings(data)
}
```
我理解`[]interface{}`和`[]string`是不同的类型,但`data`中的每个元素已经是字符串了!为什么Go不允许直接将一个切片转换为另一个?在其他语言中,比如Python或Java,通过类型转换就可以实现。
我尝试过使用`data.([]string)`,但也不行。