我想在go中创建一个大小为N的数组,但我不知道N在编译时会是什么,我将如何为它分配内存?
e.g。
func MakeArray(size int) {
return new ([size]int)
}
由于尺寸不是常数,因此不起作用。
这似乎是一个简单的问题,但我刚开始使用go,对我来说,如何通过阅读教程(或搜索相关文档)来做到这一点并不明显。
答案 0 :(得分:13)
函数make
创建切片,贴图和通道,并返回类型为T的初始化值。make()
调用分配一个新的隐藏数组,返回的切片值引用该数组。 / p>
package main
import "fmt"
func main(){
ptr := new(int)
*ptr = 100
fmt.Println("*ptr = ", *ptr)
slice := make([]int, 10) // slice with len(slice) == cap(slice) == 10
for i:=0; i<len(slice); i++{
fmt.Println(slice[i])
}
}
答案 1 :(得分:7)
对于切片,Go make
内置函数有两个或三个参数。
make(T, n) slice of type T with length n and capacity n
make(T, n, m) slice of type T with length n and capacity m