在go中使用数组,由于类型不匹配而无法编译代码

Jer*_*oko 1 go

所以我正在尝试编译go中的forllowing代码,这是我几个小时前刚刚提到的

package main

import "fmt"

func main() {

    a := [...]float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    sum := avg(a)
    fmt.Println(sum)

}

func avg(arr []float64) (sum float64) {
    for _, v := range arr {
        sum += v
    }
    sum = sum / float64(len(arr))
    return
}
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,说我无法传递10元素长数组,因为函数是用[] float64数组定义的.有没有办法解决这个问题,还是我错过了一些明显的东西?

Arj*_*jan 5

您定义a为长度数组,并且avg您期望切片float64

如果你不需要固定长度定义a为切片:

a := []float64{...}
Run Code Online (Sandbox Code Playgroud)

或者你可以转换array为切片:

sum := avg(a[:])
Run Code Online (Sandbox Code Playgroud)