ホームページ > バックエンド開発 > Golang > Append and Spread 演算子を使用して Go スライスから要素を効率的に削除するにはどうすればよいですか?

Append and Spread 演算子を使用して Go スライスから要素を効率的に削除するにはどうすればよいですか?

DDD
リリース: 2024-12-18 07:40:11
オリジナル
917 人が閲覧しました

How to Efficiently Delete an Element from a Go Slice Using the Append and Spread Operator?

スライス内の要素を削除

この Go コードのスニペットは、スライスから要素を削除する方法を示しています。

func main() {
    a := []string{"Hello1", "Hello2", "Hello3"}
    fmt.Println(a)
    // [Hello1 Hello2 Hello3]
    a = append(a[:0], a[1:]...)
    fmt.Println(a)
    // [Hello2 Hello3]
}
ログイン後にコピー

このコードは、append 関数を使用して要素を削除するトリックを示しています。これはどのように機能し、... (ドット ドット ドット) 演算子は何を行うのでしょうか?

スライス a からインデックス i の要素を削除するための構文説明:

a = append(a[:i], a[i+1:]...)
ログイン後にコピー

[:i]

は、スライスの先頭から空のスライスを作成します。 (含まれない) インデックス i.
  • [i 1:]インデックス i の要素の後に始まり、スライスの最後まで続くスライスを作成します。
  • ... は、スライスまたは配列の要素を展開するスプレッド演算子です。可変引数。
  • append が呼び出される場合、最初の引数は変更されるスライスと同じタイプのスライス (この場合は a) である必要があり、2 番目の引数は同じ型の任意の数の要素を受け入れる可変引数パラメーター。戻り値は要素が追加された新しいスライスです。
  • 指定されたコードでは、スプレッド演算子は a[1:] から要素を解凍します。 append の可変長引数に代入します。これは、要素 a[1]、a[2]、... を手動で渡すことと同じです。最初の引数は、古い要素が確実に上書きされるように空のスライスです。

結論:

このトリックを使用すると、削除したい要素の前後の要素を含むスライスを再構成することで、スライスから要素を削除できます。スプレッド演算子は、スライスに追加し直す要素をアンパックする際に重要な役割を果たします。

以上がAppend and Spread 演算子を使用して Go スライスから要素を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート