如何使用go编程语言为数组分配内存?

Cha*_* Ma 10 memory-management go

我想在go中创建一个大小为N的数组,但是我不知道在编译时N会是什么,我将如何为它分配内存?

例如

func MakeArray(size int) {
  return new ([size]int)
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为大小不是一个常数.

这似乎是一个简单的问题,但我刚开始使用go,对我来说,如何通过阅读教程(或搜索文档的内容)来做这件事并不明显.

Mic*_*kis 14

该函数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])
   }
}
Run Code Online (Sandbox Code Playgroud)


pet*_*rSO 8

对于切片,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
Run Code Online (Sandbox Code Playgroud)