在GO中输入接口转换片我很好奇为什么Go不隐式转换[]T到[]interface{}当它将隐式转换T到interface{}..关于这个转换有什么不平凡的地方吗?例子:func foo([]interface{}) { /* do something */ }func main() {
var a []string = []string{"hello", "world"}
foo(a)}go build抱怨不能在函数参数中使用(类型[]字符串)作为类型[]接口{}如果我想明确地做同样的事情:b := []interface{}(a)抱怨无法将(类型[]字符串)转换为类型[]接口{}因此,每次我需要做这个转换(这似乎是经常出现的),我一直在做这样的事情:b = make([]interface{}, len(a), len(a))for i := range a {
b[i] = a[i]}是否有更好的方法来实现这个,或者标准库函数来帮助这些转换?每次我想要调用一个函数时,编写4行额外的代码,这似乎有点愚蠢,该函数可以接收例如INT或字符串的列表。
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
T
interface{}
T
T
价值
interface{}
T
指向类型的指针 T
价值
[]T
[]interface{}
?
[]T
[]interface{}
interface {}
- 3 回答
- 0 关注
- 665 浏览
添加回答
举报
0/150
提交
取消