2011-06-25 4 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」には第2引数がありましたが、「new」は認識されませんでした。 –

7

スライスの場合、Go makeビルトイン関数には2つまたは3つの引数があります。

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 
関連する問題