我有 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/