在Go 切片中搜尋元素
在Go 中使用結構體切片時,透過鍵定位特定元素可能是一項常見任務。讓我們來探索如何使用各種方法來實現這一點:
通用函數:slices.IndexFunc()
從Go 1.21 開始,標準庫中的slices 套件引入了一個稱為slices.IndexFunc()的通用搜尋函數:
func IndexFunc[S ~[]E, E any](s S, f func(E) bool) int
此函數傳回第一個索引 i其中 f(s[i]) 為 true,如果找不到符合元素,則為 -1。要使用slices.IndexFunc() 在結構體切片中搜尋鍵:
idx := slices.IndexFunc(myconfig, func(c Config) bool { return c.Key == "key1" })
For Loop
使用早期版本的Go 或用於基本版本時方法,您可以使用for 迴圈:
for _, v := range myconfig { if v.Key == "key1" { // Found } }
Optimized For循環
為了提高效能,建議使用for 循環對索引i 進行操作,而不是複製元素:
for i := range myconfig { if myconfig[i].Key == "key1" { // Found } }
高效查找的映射
如果透過鍵搜尋元素是一個頻繁的操作,請考慮從切片建構一個映射。這允許快速基於鍵的查找:
// Build a config map: confMap := map[string]string{} for _, v := range myconfig { confMap[v.Key] = v.Value } // To find a value by key: if v, ok := confMap["key1"]; ok { // Found }
注意事項:
以上是如何有效率地透過Key找出Go切片中的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!