加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 19:20:13 所属栏目:大数据 来源:网络整理
导读:为什么这不行? package mainimport "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++ {
为什么这不行?
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的数组,并且在调用该数组时将复制该数组。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读