Предположим, у меня есть фрагмент строк, например:
fruits := {"apple", "orange", "banana"}
и карта типа
box:= map[string]int{
"chicken": 1,
"drinks": 4,
"apples": 42,
}
Какой самый эффективный способ проверить, содержит ли box
apple
, orange
или banana
? Обратите внимание, что здесь мы ищем не точное совпадение, а ключ, который СОДЕРЖИТ определенных строк. Так что простой поиск ключа здесь не работает.
Я знаю, что могу извлечь ключи из карты:
keys := make([]string)
for k := range box {
keys = append(keys, k)
}
И затем выполнить итерацию по обоим слоям для поиска среди ключей:
for _, f := range fruits {
for _, k in keys {
if strings.Contains(k, f) {
fmt.Println("Fruit found!")
}
}
Но это опровергает Преимущество использования карты вместо слайса для поиска строк. Так есть ли лучший способ сделать это?