Go 中的切片包含檢查
在Go 中,無需迭代每個項目即可高效地查找切片中是否存在元素.
微不足道方法
正如Mostafa提到的,可以建立一個自訂方法來簡化任務:
func SliceContains(slice []T, target T) bool { for _, item := range slice { if item == target { return true } } return false }
二分查找
或者, mkb 建議使用 sort 套件中的二分搜尋。這種方法需要預先排序的切片,對於大型資料集非常有效。
sort.Slice(slice, func(i, j int) bool { return slice[i] < slice[j] }) idx := sort.Search(len(slice), func(i int) bool { return slice[i] == target }) contains := idx != len(slice) && slice[idx] == target
地圖最佳化
如果需要頻繁的包含檢查,請使用地圖而不是切片可以提供更好的性能。
type Set map[string]struct{} func (s Set) Contains(key string) bool { _, ok := s[key] return ok }
在映射中使用空 struct{} 值可以減少記憶體開銷,並且最佳化地圖效能。 Set 通常用於 Go 中類似集合的操作。
以上是如何有效檢查 Go 中的切片包含?的詳細內容。更多資訊請關注PHP中文網其他相關文章!