Как выделить память для массива на языке программирования 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