Go의 슬라이스에서 중복 문자열 또는 정수 제거
문제:
중복된 항목이 포함될 수 있는 학생의 도시. 모든 슬라이스에서 모든 중복 문자열을 제거하는 일반적인 솔루션을 만들고 싶습니다.
비효율적인 솔루션:
현재 솔루션에는 슬라이스의 각 요소가 다른 루프에 있는지 확인하는 작업이 포함됩니다. 이는 큰 조각에는 비효율적입니다.
효율적인 솔루션: 맵 사용
효율적인 솔루션 중복을 제거하는 방법은 맵을 사용하여 고유한 요소를 저장하는 것입니다. 슬라이스를 반복하면서 현재 요소가 맵에 존재하는지 확인하세요. 그렇지 않은 경우 맵과 필터링된 결과에 추가하세요.
일반 솔루션:
다음은 모든 슬라이스에서 중복 항목을 제거하는 일반 함수입니다. 여기서 T는 비교 가능한 유형일 수 있습니다.
func removeDuplicate[T comparable](sliceList []T) []T { allKeys := make(map[T]bool) list := []T{} for _, item := range sliceList { if _, value := allKeys[item]; !value { allKeys[item] = true list = append(list, item) } } return list }
문자열 및 문자열을 위한 특정 솔루션 정수:
코드를 단순화하기 위해 문자열과 정수에 대한 특정 함수를 생성할 수도 있습니다:
func removeDuplicateStr(strSlice []string) []string { // [Remove duplicate code here] } func removeDuplicateInt(intSlice []int) []int { // [Remove duplicate code here] }
사용 예:
studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"} uniqueStudentsCities := removeDuplicate(studentsCities) fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]
이 접근 방식을 사용하면 유형에 관계없이 모든 슬라이스에서 중복 항목을 효과적으로 제거할 수 있습니다.
위 내용은 Go 슬라이스에서 중복 요소를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!