一尘不染

go中动态初始化数组大小

go

我尝试在 go 中编写一个小应用程序,它从标准输入中获取“x”个整数,计算平均值并将其返回。我只得到了这么远:

func main() {
var elems, mean int
sum := 0

fmt.Print("Number of elements? ")

fmt.Scan(&elems)

var array = new([elems]int)

for i := 0; i < elems; i++ {
    fmt.Printf("%d . Number? ", i+1)
    fmt.Scan(&array[i])
    sum += array[i];
}............

尝试编译它时,我收到以下错误消息:

无效的数组绑定元素

这里有什么问题?


阅读 215

收藏
2021-12-23

共1个答案

一尘不染

您应该使用切片而不是数组:

//var array = new([elems]int) - no, arrays are not dynamic
var slice = make([]int,elems) // or slice := make([]int, elems)

此外,您可能需要考虑为循环使用范围

// for i := 0; i < elems; i++ { - correct but less idiomatic
for i, v := range slice {
2021-12-23