微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组 – 将数组作为参数传递给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的数组,并且在调用该数组时将复制该数组。

原文地址:https://www.jb51.cc/go/187068.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐