golangの配列とスライスの違い

golangの配列とスライスの違い

アレイ:array1:= [3] int {1,2,3}
スライス:array2:= [] int {1,2,3}この追加
スライスのみを直接追加できますres:= append(array2,10)

ただし、スライスがこのように
array2 [3] = 20を割り当てたい場合、メモリスペースが割り当てられていないためエラーが報告されるため、この時点でmakeが必要です。

ARRAY3:=メイク([] int型、10)
ARRAY3 [3] = 20古い値を割り当てることができますので。
という注意
ARRAY3:=メイク([] int型、10)
ARRAY3 [11] = 20これは大丈夫ですか?エラーが報告されます。これは、定義された長さが10であるため、11番目の位置が指定されたときにエラーが報告されます。
このときどうすればよいですか?このとき、追加が必要であり、追加は自動的に展開されます。

配列が等しいかどうかを判断するには、
if shu1 == shus2
を使用しますスライスはreflect.DeepEqual(slice1、slice2)を使用する必要があります

概要:1。スライスのみ追加できます
2.配列は直接割り当てることができますが、指定した長さ内で割り当てる必要があり、範囲を超えるとエラーが報告され
ます。3。スライスを直接追加できますが、作成後に割り当てる必要があります。スライスのサイズを指定したら、割り当てます。範囲を超えることはできません。追加を使用してください

ここに写真の説明を挿入
ここに写真の説明を挿入

注:配列は値のコピーであり、スライスとマップは参照によって渡されます。再度コピーを作成する場合は、copyを使用してください

概要:配列は値のコピーです。スライスは同じ配列を指すアドレスを参照しますが、コピー機能を使用する場合は、配列を指す代わりにスライスを再度コピーすることと同じ
ここに写真の説明を挿入
です:= make(map [int] string 、8)2番目のパラメーターは容量を表し、前のスライスの2番目の要素は長さ、3番目のパラメーターは容量です
fmt.Println(len(a))// correct
fmt.Println(cap(a))//エラー
マップキャップを直接使用して容量を取得することはできません

おすすめ

転載: blog.csdn.net/weixin_37509194/article/details/109038287