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 중국어 웹사이트의 기타 관련 기사를 참조하세요!