固定サイズでない空のスライスを宣言するには、次のようにする方がよいでしょう。
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 が指摘しているように、上記のオプションのいずれも割り当てを引き起こしません。