【发布时间】:2018-07-02 19:25:45
【问题描述】:
我正在尝试创建一个函数,该函数打印出传递给它的列表的len,而不管列表的类型如何。我的天真做法是:
func printLength(lis []interface{}) {
fmt.Printf("Length: %d", len(lis))
}
但是,当尝试通过
func main() {
strs := []string{"Hello,", "World!"}
printLength(strs)
}
它抱怨说
cannot use strs (type []string) as type []interface {} in argument to printLength
但是,string 可以用作interface{},那为什么[]string 不能用作[]interface{}?
【问题讨论】:
-
其中一个“特别”的东西。没有办法将一种类型的切片转换为另一种类型。您必须在
for循环中手动完成...就打印长度而言,您所做的fmt.Printf()就是这样。 -
重复。请参阅 Go 常见问题解答:golang.org/doc/faq#convert_slice_of_interface