2011-06-25 16 views
10

Quiero hacer una matriz de tamaño N en go, pero no sé qué N será en tiempo de compilación, ¿cómo asignaría memoria para ello?¿Cómo asigno la memoria para una matriz en el lenguaje de programación go?

p. Ej.

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

que no funciona ya que el tamaño no es una constante.

Parece una pregunta simple, pero acabo de empezar a usar Go y no me resulta evidente cómo hacerlo al leer el tutorial (o buscar en la documentación).

Respuesta

12

La función make crea rebanadas, mapas y canales, y devuelve un valor inicializado de tipo T. La llamada make() asigna una nueva matriz oculta a la que hace referencia el valor del corte devuelto.

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]) 
    } 
} 
+0

Ah gracias, no me di cuenta que 'hacer' tenía un segundo argumento, pero 'nuevo' no. –

7

Para rodajas, la función incorporada Ir make tiene dos o tres argumentos.

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 
Cuestiones relacionadas