{wcademy}

WithIndex

January 18, 2021

go как преобразовать массив в словарь

Преобразует массив значений в словарь, используя в качестве ключа индекс параметра

  • Используем 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"}))
}
🚀  Если узнал из статьи что-то полезное, ставь лайк и подписывайся на наш канал в Телеграм или группу ВК. Обсудить статью можно в нашем уютном чатике 😏

© 2019 - 2022, {wcademy}