这不是错误。fmt.Println()
需要一个[]interface{}
类型。这意味着它必须是interface{}
值的切片,而不是“任何切片”。为了转换切片,您将需要循环并复制每个元素。
old := flag.Args()
new := make([]interface{}, len(old))
for i, v := range old {
new[i] = v
}
fmt.Println(new...)
您无法使用任何分片的原因是,a []string
和a 之间的转换[]interface{}
需要更改内存布局,并且发生时间为O(n)。将类型转换为interface{}
需要O(1)时间。如果他们不需要此for循环,则编译器仍将需要插入它。