为什么这不起作用?
package main
import "fmt"
type name struct {
X string
}
func main() {
var a [3]name
a[0] = name{"Abbed"}
a[1] = name{"Ahmad"}
a[2] = name{"Ghassan"}
nameReader(a)
}
func nameReader(array []name) {
for i := 0; i < len(array); i++ {
fmt.Println(array[i].X)
}
}
错误:
.\structtest.go:15: cannot use a (type [3]name) as type []name in function argument
原文由 user1721803 发布,翻译遵循 CC BY-SA 4.0 许可协议
您已将函数定义为接受一个切片作为参数,而您正试图在调用该函数时传递一个数组。有两种方法可以解决这个问题:
这种解决方案的缺点是该函数现在只能接受长度为 3 的数组,并且在调用它时会制作该数组的副本。
您可以 在此处 找到有关数组和切片的更多详细信息,以及使用它们时的常见陷阱