Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I allocate memory for an array in the go programming language?

I want to make an array of size N in go, but I don't know what N will be at compile time, how would I allocate memory for it?

e.g.

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

which doesn't work since size is not a constant.

This seems like a simple question, but I just started using go and it's not obvious to me how to do this from reading the tutorial (or searching the documentation for that matter).

like image 487
Charles Ma Avatar asked Jun 25 '11 05:06

Charles Ma


1 Answers

The function make creates slices, maps, and channels, and it returns an initialized value of type T. The make() call allocates a new, hidden array to which the returned slice value refers.

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])
   }
}
like image 87
Michael Foukarakis Avatar answered Oct 21 '22 15:10

Michael Foukarakis