arrays - 在golang中通过引用传递数组

标签 arrays go

我有 C 背景,以 C 风格传递数组会导致错误。

package main
import "fmt"

func f(a *int){
  fmt.Println(a[1])
}

func main(){
  var a [100]int
  a[1]=100
  f(a)
}

错误::不能在 f 的参数中使用 (type [100]int) 作为类型 *int

最佳答案

正如其他人在评论中提到的,您可能想要使用 slice 而不是数组。 slice 已经通过引用传递,因此无需指定指针。下面的 make 语句创建了一个整数片段(由数组支持)。在下面的代码中,我给它的长度为 2,容量为 100,以满足您分配给索引 1 的目标。

import (
    "fmt"
)

func f(a []int) {
    fmt.Println(a[1])
}

func main() {
    a := make([]int, 2, 100)
    a[1] = 100
    f(a)
}

关于arrays - 在golang中通过引用传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38731467/

相关文章:

Java 怎样的内存效率更高?

mongodb - 使用go mongo-driver查找对象数组中对象的匹配字段

ubuntu - Selenium 无法启动 - Ubuntu 14

javascript - 这个 for 循环如何确定何时中断循环

go - 使用多个数据库(DAO 模式)

docker - 无法在具有 Linux Runner 的 Docker 容器中执行 GO 二进制文件

GoQuery 选择提取器不工作

c++ - 如何概括普通二维数组?

php - 根据值合并数组的键

c - char * 和 char[] 的区别