Как выделить память для массива на языке программирования go?

Я хочу создать массив размера N в go, но я не знаю, что будет во время компиляции N, как бы выделить память для него?

например.

func MakeArray(size int) {
  return new ([size]int)
}

который не работает, поскольку размер не является константой.

Это похоже на простой вопрос, но я только начал использовать go, и мне не показалось очевидным, как это сделать, прочитав учебник (или, если нужно, найти документацию).

Ответ 1

Функция 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])
   }
}

Ответ 2

Для срезов функция 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