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 サイトの他の関連記事を参照してください。