從Go 中的切片中刪除重複的字串或整數
問題:
問題:你有一個切片可能包含重複條目的學生城市。您想要建立一個通用解決方案來刪除任何切片中的所有重複字串。
效率低下的解決方案:您目前的解決方案涉及檢查切片中的每個元素是否存在於另一個循環中,這對於大切片來說效率很低。
有效的解決方案:使用地圖一種有效的方法刪除重複項就是使用映射來儲存唯一元素。當您迭代切片時,檢查目前元素是否存在於地圖中。如果沒有,請將其新增至地圖和過濾結果。
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 }
這是一個從任何切片中刪除重複項的通用函數,其中 T 可以是任何可比較的類型:
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中文網其他相關文章!