2017-01-28 40 views
1
a = make([]int, 7, 15) 

サイズ15とスライス(a)の暗黙的なアレイは、アレイ内の最初の7つの要素に暗黙アレイやポイントの浅いコピーを作成する作成します。GOでスライスはどのように機能しますか?

検討

var a []int; 

は、任意の暗黙の配列を指していない長さゼロのスライスを作成します。

a = append(a, 9, 86); 

は、長さ2の新しい暗黙的な配列を作成し、値986を追加します。スライス(a)ポイント

len(a) is 2cap(a) >= 2


その新しい暗黙の配列への私の質問:

が、これは正しい理解でしょうか?

+0

"ツアーオブゴー"(tour.golang.org)、特にスライスパーツを使用して作業したい場合があります。 – Volker

答えて

1

Declare slice or make slice?」と述べたように、スライス(ゼロ)のゼロ値は長さゼロのスライスのように動作します。

a []intに直接追加することができます。

nilの代わりに)空のスライスを返す可能性がある場合にのみ、スライス(make([]int, 0))を作成する必要があります。
そうでない場合、追加を開始する前にメモリを割り当てる必要はありません。
は、それが何を指していても、「Arrays, slices (and strings): The mechanics of 'append': Nil

はnilスライスが長さゼロのスライスと機能的に同等であるも参照してください。これは、長さがゼロであり、割り振りとともに付加することができます。

関連する問題