Go 슬라이스 또는 배열에서 고유한 항목 찾기
Go에서 데이터를 처리할 때 고유한 요소만 추출해야 할 수 있습니다. 슬라이스 또는 배열에서. Python은 이러한 목적을 위해 집합과 같은 편리한 구성을 제공하지만 Go는 기본적으로 유사한 내장 기능을 제공하지 않습니다.
목록에서 고유한 좌표를 찾는 것이 목적인 질문에 제공된 샘플 코드를 고려해보세요. 중복된 내용이 포함되어 있습니다. 코드는 원래 목록(방문)과 처음에 비어 있는 고유 목록을 모두 반복하고 리플렉션을 사용하여 방문한 각 요소를 고유한 모든 요소와 비교하여 이를 달성하려고 합니다.
코드 분석 및 오류
그러나 코드에는 다음과 같은 몇 가지 문제가 있습니다.
향상된 솔루션
원하는 논리를 따르는 단순화되고 보다 효율적인 솔루션이 아래에 제시되어 있습니다.
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit for _, v := range visited { skip := false for _, u := range unique { if v == u { skip = true break } } if !skip { unique = append(unique, v) } } fmt.Println(unique)</code>
Map을 사용한 대체 솔루션
또는 Go의 지도를 활용할 수도 있습니다[visit] bool을 사용하여 집합과 같은 구조를 만들고 다음과 같이 고유 요소를 추출합니다.
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { unique[v] = true } fmt.Println(unique)</code>
맵 키는 고유 요소를 나타냅니다. 고유한 방문 값 조각을 얻으려면 추가 단계가 필요합니다.
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } var unique []visit m := map[visit]bool{} for _, v := range visited { if !m[v] { m[v] = true unique = append(unique, v) } } fmt.Println(unique)</code>
이러한 솔루션은 Go 슬라이스 또는 배열에서 고유한 요소를 효과적으로 찾아 문제 설명을 준수하고 구축 시 효율적인 대안을 제공합니다. 세트 기능이 부족합니다.
위 내용은 Go 슬라이스 또는 배열에서 고유한 요소를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!