1. ホーム
  2. go

[解決済み] スライスを宣言するのか、スライスを作るのか?

2022-08-01 14:07:28

質問

Goでは、以下の違いは何ですか? var s []ints := make([]int, 0) ?

どちらも動作することがわかりますが、どちらが良いのでしょうか?

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

さらに ファブリーズ 's 答え で、より多くの例を見ることができます。 Goスライス: 使用法と内部構造 の使用法については、" を参照してください。 []int を使用することが言及されています。

スライスのゼロ値なので( nil ) のように動作します。 長さゼロのスライス を使えば、スライス変数を宣言し、ループの中でそれに追加することができます。

// Filter returns a new slice holding only
// the elements of s that satisfy f()
func Filter(s []int, fn func(int) bool) []int {
    var p []int // == nil
    for _, v := range s {
        if fn(v) {
            p = append(p, v)
        }
    }
    return p
}

これは、スライスに追加するために、最初にメモリを確保する必要がないことを意味します。 nil スライス p int[] は、追加するスライスとして十分です。