数组 – 将数组作为参数传递给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的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1&#160;Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...