空のスライスを初期化する正しい方法 質問する

空のスライスを初期化する正しい方法 質問する

固定サイズでない空のスライスを宣言するには、次のようにする方がよいでしょう。

mySlice1 := make([]int, 0)

または:

mySlice2 := []int{}

どちらが正しい方法なのか疑問に思います。

ベストアンサー1

提示された 2 つの選択肢は意味的には同じですが、使用すると、runtime.makeslice (Go 1.16)make([]int, 0)が内部的に呼び出されます。

値をそのまま残すオプションもありますnil:

var myslice []int

に書かれているようにGolang.org ブログ:

nil スライスは、何も指していないにもかかわらず、機能的には長さが 0 のスライスと同等です。長さは 0 で、割り当てによって追加できます。

nilただし、@farwayer が指摘したように、スライスjson.Marshal()は にマーシャリングされます"null"が、空のスライスは にマーシャリングされます。"[]"

@ArmanOrdookhani が指摘しているように、上記のオプションのいずれも割り当てを引き起こしません。

おすすめ記事