WithIndex
January 18, 2021
Преобразует массив значений в словарь, используя в качестве ключа индекс параметра
- Используем
reflect.ValueOf()
для получения слайса, make() для создания нового словаря. - Использует цикл с функциями
Value.Len()
,Value.Index()
иValue.Interface()
для итерации над каждым элементом и добавления его в словарь.
package main
import (
"fmt"
"reflect"
)
func WithIndex(params interface{}) map[int]interface{} {
arr := reflect.ValueOf(params)
m := make(map[int]interface{})
for i := 0; i < arr.Len(); i++ {
m[i] = arr.Index(i).Interface()
}
return m
}
func main() {
fmt.Println(WithIndex([]string{"a", "b", "c"}))
}
map[0:a 1:b 2:c]
То же самое на go2, без рефлексии и пустых интерфейсов:
package main
import (
"fmt"
)
func WithIndex[T any](params []T) map[int]T {
m := make(map[int]T)
for i := 0; i < len(params); i++ {
m[i] = params[i]
}
return m
}
func main() {
fmt.Println(WithIndex([]string{"a", "b", "c"}))
}
🚀 Если узнал из статьи что-то полезное, ставь лайк и подписывайся на наш канал в Телеграм или группу ВК. Обсудить статью можно в нашем уютном чатике 😏