슬라이스에서 중복 항목 삭제
각 피어가 주소 및 PeerID로 특성화되는 텍스트 파일에서 중복 피어를 제거하려고 합니다. 제공된 코드는 이 작업을 효과적으로 처리하지만 마지막 중복 항목을 삭제할 때 오류가 발생합니다. 이 문제를 해결하기 위해 수정된 접근 방식이 제시됩니다.
시작하려면 변수 i를 선언하고 0으로 초기화합니다. 이 변수는 cfg.Bootstrap 슬라이스에서 중복되지 않은 마지막 피어의 인덱스를 추적합니다. 그런 다음 범위 기반 for 루프를 사용하여 슬라이스를 반복합니다.
루프 내에서 현재 피어의 Address 및 PeerID가 제거할 피어의 주소 및 PeerID와 일치하는지 확인합니다. 그렇다면 현재 피어를 건너뜁니다. 그렇지 않으면 현재 피어를 cfg.Bootstrap[i]에 할당하고 i를 증가시킵니다.
루프가 완료된 후 cfg.Bootstrap[i:]에는 제거해야 하는 중복 피어만 포함됩니다. 이러한 초과 값을 잘라내려면 cfg.Bootstrap[:i]를 다시 cfg.Bootstrap에 할당합니다.
수정된 코드 조각은 다음과 같습니다.
<code class="go">i := 0 for _, v := range cfg.Bootstrap { if v.PeerId == peer.PeerId && v.Address == peer.Address { continue } cfg.Bootstrap[i] = v i++ } cfg.Bootstrap = cfg.Bootstrap[:i]</code>
이 수정된 접근 방식은 모든 중복 피어를 효율적으로 삭제합니다. 마지막 위치에도 포함됩니다.
위 내용은 Go의 슬라이스에서 중복 항목을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!