Go/clear

Goのclear関数は、Go 1.21で導入された事前宣言された組み込み関数で、スライス、マップ、型パラメータの要素を削除するために使用されます。

clear関数の基本仕様

構文

func clear[T ~[]E | ~map[K]V, E any, K comparable, V any](t T)

動作の詳細

  1. スライスの場合
    • すべての要素をその型のゼロ値に設定
    • lencapは変更されない
    • スライスのサブスライスも対応
  2. マップの場合
    • すべてのキー・バリューペアを削除
    • マップのサイズは0になる
    • makeで確保された容量は保持される
  3. 型パラメータの場合
    • ジェネリック型でスライスまたはマップに制約された型でも使用可能

他のキーワード・関数との重要な違い

  • deleteとの違い: deleteは1つのキーを削除、clearは全要素を削除
  • appendとの関係: clear後もappendは正常に動作
  • makeとの関係: makeで作成した容量は保持される
  • copyとの組み合わせ: クリア後のスライスにコピー可能

主要なユースケース

  1. メモリリーク防止: 大きなオブジェクトを含むスライスを再利用する際
  2. オブジェクトプール: プールされたオブジェクトのリセット
  3. 一時的なコレクション: 処理の合間でコレクションをクリア
  4. ジェネリック関数: 型パラメータを使った汎用的なクリア処理

パフォーマンスへの影響

  • メモリ効率: ガベージコレクションの負荷を軽減
  • 再利用: スライスやマップの容量を保持したまま再利用可能
  • CPU効率: ループでの個別削除より高速
カテゴリ:Go
カテゴリ:Go