2011-06-25 24 views
10

Chcę utworzyć tablicę o rozmiarze N w programie go, ale nie wiem, co N będzie w czasie kompilacji, w jaki sposób przydzieliłbym dla niego pamięć?Jak przydzielić pamięć dla tablicy w języku programowania go?

np.

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

co nie działa, ponieważ rozmiar nie jest stałą.

To wydaje się proste pytanie, ale zacząłem używać go i nie jest dla mnie oczywiste, jak to zrobić, czytając samouczek (lub przeszukując dokumentację).

Odpowiedz

12

Funkcja make tworzy plasterki, mapy i kanały i zwraca zainicjowaną wartość typu T. Wywołanie make() przydziela nową, ukrytą tablicę, do której odnosi się zwrócona wartość wycinka.

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

Ach dzięki, nie zdawałem sobie sprawy, że "marka" ma drugi argument, ale "nowy" nie. –

7

W przypadku plasterków wbudowana funkcja Go make ma dwa lub trzy argumenty.

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 
Powiązane problemy