【发布时间】:2014-02-15 00:04:58
【问题描述】:
我觉得很奇怪,为什么[]string不能转换为[]interface{}?
我认为应该可以,因为:
- 都是切片
- []string的每个元素都是字符串,当然是interface{}
但在下面的例子中,这将是一个编译错误
func f(args ...interface{}){
}
s := []string{"ssd", "rtt"}
f(s...)
为什么语言不能自动完成转换?
【问题讨论】:
-
Golang 数组不支持协方差 - 见 stackoverflow.com/questions/3839335/… , stackoverflow.com/questions/19389629/…
-
这在常见问题解答golang.org/doc/faq#convert_slice_of_interface 中有描述。推荐阅读 golang.org 上提供的文档。