在Go编程语言中,如何为数组分配内存?

11
我想在Go语言中创建一个大小为N的数组,但是我不知道编译时会是什么N,我该如何为其分配内存?
例如:
func MakeArray(size int) {
  return new ([size]int)
}

由于size不是一个常量,所以它不起作用。

这似乎是一个简单的问题,但我刚开始使用go,从教程(或搜索文档)中读取并不明显。

2个回答

17
函数make用于创建切片、映射和通道,并返回类型T的初始化值。调用make()会分配一个新的、隐藏的数组,返回的切片值引用该数组。
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])
   }
}

啊,谢谢,我没意识到“make”有第二个参数,但“new”没有。 - Charles Ma

10
对于切片,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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接