1. ホーム

[解決済み】空のスライスを初期化する正しい方法

2022-03-26 10:01:39

質問

サイズが固定されていない空のスライスを宣言すること。 が良いのでしょうか。

mySlice1 := make([]int, 0)

または

mySlice2 := []int{}

ただ、どちらが正しい方法なのかは疑問です。

どのように解決するのですか?

あなたがあげた2つの選択肢は意味的には同じですが、その中で make([]int, 0) を内部で呼び出すことになります。 ランタイムメスライス (Go 1.16)。

で残すという選択肢もあります。 nil の値を指定します。

var myslice []int

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

<ブロッククオート

nilスライスは、何も指していませんが、機能的には長さ0のスライスと同じです。長さは0であり、割り当てにより追加することができます。

A nil スライスは、しかし json.Marshal()"null" にマーシャルされるのに対し、空のスライスは "[]" というのは、@farwayer さんのご指摘の通りです。

ArmanOrdookhani さんの指摘により、上記のどのオプションもアロケーションを発生させない。