Go でのスライスの効率的なクリア
Go では、スライスは要素のシーケンスへの動的にサイズ変更されるポインタです。スライスを効率的にクリアするために、さまざまなアプローチとその影響を検討します。
アプローチ 1: nil** に設定する
スライスを nil 基礎となるメモリの割り当てを解除し、容量をゼロにリセットします。これは推奨されるアプローチです。
func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) // 4 fmt.Println(len(letters)) // 4 letters = nil // Clear the slice fmt.Println(cap(letters)) // 0 fmt.Println(len(letters)) // 0 }
アプローチ 2: 長さをゼロにスライスする
別のオプションは次のとおりです。構文 [:0] を使用して、スライスを長さ 0 にスライスします。これはスライスをクリアしているように見えますが、実際は次のとおりです。func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) // 4 fmt.Println(len(letters)) // 4 letters = letters[:0] // Slice to zero length fmt.Println(cap(letters)) // 4 fmt.Println(len(letters)) // 0 }
ベスト プラクティス
スライスをnil に設定することは、効果的にメモリの割り当てを解除し、潜在的なエイリアシングの問題を防ぐため、Go でスライスをクリアするための推奨されるアプローチです。
以上がGo でスライスを効率的にクリアするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。