数组 – 将数组作为参数传递给golang

前端之家收集整理的这篇文章主要介绍了数组 – 将数组作为参数传递给golang前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么这不行?
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
您已经定义了您的函数来接受一个切片作为参数,而您尝试在调用函数时传递一个数组。有两种方法可以解决这个问题:

>调用函数时,在数组中创建一个切片。改变这样的电话就够了:

nameReader(a[:])

>改变函数签名以取代数组而不是切片。例如:

func nameReader(array [3]name) {
    ...
}

解决方案的缺点是,该函数现在只能接受长度为3的数组,并且在调用该数组时将复制该数组。

猜你在找的Go相关文章