如何有效地從Go 中的切片中刪除重複值
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 }
字串特定解決方案
為了提高效率,可以使用特定於字串的解決方案:
func removeDuplicateStr(strSlice []string) []string { allKeys := make(map[string]bool) list := []string{} for _, item := range strSlice { if _, value := allKeys[item]; !value { allKeys[item] = true list = append(list, item) } } return list }
整數特定的解決方案
類似地,特定於整數的解決方案進一步提供了最佳化:
func removeDuplicateInt(intSlice []int) []int { allKeys := make(map[int]bool) list := []int{} for _, item := range intSlice { if _, value := allKeys[item]; !value { allKeys[item] = true list = append(list, item) } } return list }
用法
可以透過傳遞包含重複值的切片並接收僅包含唯一元素的新切片來使用這些函數:
// Sample usage cities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"} uniqueCities := removeDuplicate(cities)
結論
所提出的解決方案提供了在Go 中從切片中刪除重複值的最佳方法,從而實現高效的程式碼和最佳的性能。
以上是如何有效率地去除Go切片中的重複值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!