Golang: Интерфейс карты, как распечатать ключ и значение - PullRequest
0 голосов
/ 28 мая 2020

Я получаю интерфейс карты, например:

getUsersAppInfo := usersAppInfo.GetUsersAppInfo(getUserId)

, затем печатаю:

fmt.Println(getUsersAppInfo)

получаю это, например:

[map[appId:2 fcmServerKey:keyTestTest name:com.app]]

Спросите: Как просто напечатать значение, например

appId value is 2 
name value is com.app 
fcmServerKey:keyTestTest value is keyTestTest 

Ответы [ 3 ]

4 голосов
/ 28 мая 2020

Комментарий OP к вопросу гласит, что тип getUsersAppInfo равен []map[string]interface{}.

L oop над фрагментом карт. Для каждой карты l oop над ключами и значениями и печать.

// loop over elements of slice
for _, m := range getUsersAppInfo {

    // m is a map[string]interface.
    // loop over keys and values in the map.
    for k, v := range m {
        fmt.Println(k, "value is", v)
    }
}

Запустите это на GoLang PlayGround .

0 голосов
/ 29 мая 2020

Я не рекомендую делать это при настройке производства. Но когда я хочу распечатать карту без лишнего кода в моем окне разработчика, я распечатываю сериализованную версию JSON. Это будет преступлением на производстве.

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    a := map[string]interface{}{"appId": 2, "fcmServerKey": "keyTestTest", "name": "com.app", "version": []int{1, 2, 3}, "xyz": 3}
    bs, _ := json.Marshal(a)
    fmt.Println(string(bs))
}

Вывод:

{"appId":2,"fcmServerKey":"keyTestTest","name":"com.app","version":[1,2,3],"xyz":3}

0 голосов
/ 28 мая 2020

Боюсь, единственный вариант - перебрать карту:

getUsersAppInfo := map[string]interface{}{"foo": 3, "bar": "baz"}
for key, value := range getUsersAppInfo {
    fmt.Printf("%s value is %v\n", key, value)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...