2011-06-25 70 views
10

我想創建一個大小爲N的數組,但是我不知道在編譯時N是什麼,我將如何爲它分配內存?如何在go編程語言中爲數組分配內存?

例如

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

由於尺寸不是常數,所以不起作用。

這似乎是一個簡單的問題,但我剛開始使用go,對於我來說,閱讀教程(或查找相關文檔)並不明顯。

回答

12

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

啊謝謝,沒有意識到'make'有第二個參數,但'新'沒有。 –

7

對於切片,內置函數有兩個或三個參數。

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