ホームページ > バックエンド開発 > Golang > ループ内の Go 構造体配列から要素を削除するときに「範囲外」エラーを回避するにはどうすればよいですか?

ループ内の Go 構造体配列から要素を削除するときに「範囲外」エラーを回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-04 21:30:12
オリジナル
664 人が閲覧しました

How to Avoid

Go のループ内の構造体配列から要素を削除する

問題:
配列から要素を削除するときループ内の構造体の場合、「範囲外」エラーが発生する可能性があります。

解決策:
構造体の配列からキーによって要素を削除するには、次のスライス トリックのいずれかを使用することをお勧めします:

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

または

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

重要注:
ループされているスライス内から要素を削除する場合、要素のスキップを避けるために下向きループを使用することが重要です。

修正コード:

// Your original loop with the issue:
// for i, application := range config.Applications {
//   if i == 1 {
//     config.Applications = _removeApplication(i, config.Applications)
//   }
// }

// Corrected code using downward loop:
for i := len(config.Applications) - 1; i >= 0; i-- {
    application := config.Applications[i]
    // Condition to decide if current element has to be deleted:
    if haveToDelete {
        config.Applications = append(config.Applications[:i],
                config.Applications[i+1:]...)
    }
}
ログイン後にコピー

以上がループ内の Go 構造体配列から要素を削除するときに「範囲外」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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