Создание универсальной функции для извлечения значений из карты - PullRequest
0 голосов
/ 24 октября 2018

Иди сюда новичок, я пытаюсь создать общую подпрограмму для извлечения значений из карты, у меня есть это прямо сейчас:

func getValues(m map[interface{}]interface{}) []interface{} {

    v := make([]interface{}, 0, len(m))

    for _, value := range m {
        v = append(v, value)
    }

    return v
}

, и я назвал это так:

nearby := make(map[string]Nearby)
values := getValues(nearby)

но я получаю эту ошибку:

нельзя использовать рядом (карта типа [строка] рядом) в качестве карты типа [интерфейс {}] интерфейс {} в аргументе для getValues ​​

1 Ответ

0 голосов
/ 24 октября 2018

Обычно лучше всего написать код, специфичный для типа.Чтобы ответить на ваш вопрос, используйте пакет отражение :

func getValues(m interface{}) []interface{} {
    v := reflect.ValueOf(m)

    result := make([]interface{}, 0, v.Len())

    for _, k := range v.MapKeys() {
        result = append(result, v.MapIndex(k).Interface())
    }
    return result
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...