2017-10-20 40 views
-1

Je commence à Golang. À l'heure actuelle, je veux la chaîne qui est stockée dans la key_field clé de cette carte:lecture de la chaîne de la carte de Golang

map[key_field:[76 95 76 105 115 116 105 110 103 73 68]] 

cette carte est déclarée comme:

map:= make([]map[string]interface{}, 0) 

Ce que je veux est de stocker dans une chaîne de la valeur contenue dans ce tableau d'octets, que les valeurs que je les imprimer à l'aide fmt.Println Merci beaucoup

+0

Je suis confus au sujet de ce que vous essayez de faire. D'une part, cette «fabrication» va faire une tranche de cartes, ce que je ne pense pas être ce que vous voulez (est-ce)? Qu'est-ce que vous essayez de mapper de/à? Pourquoi utilisez-vous 'interface {}' comme type d'élément dans votre map? –

+0

Qu'avez-vous essayé jusqu'à présent? – fstanis

+0

@fstanis Je ne l'ai pas fait, c'est un code précédent qui a quitté l'autre développeur. C'est le résultat d'une requête à une base de données et il n'y a qu'une colonne récupérée (celle que j'essaie d'obtenir les données) –

Répondre

2

Si vous souhaitez stocker une chaîne dans la carte déclarer la carte comme

values:= []map[string]string{} 

donc la lecture, il sera plus facile, mais pour certaines raisons vous avez besoin d'une carte d'interfaces puis

values := []map[string]interface{}{} 

Maintenant, pour lire une valeur de cette carte

fmt.Println(values[index]["key"]) 

Exemple:

package main 

import "fmt" 

func main() { 
    strMap := map[string]interface{}{ 
     "hello": "world", 
    } 
    val := []map[string]interface{}{} 
    val = append(val, strMap) 
    fmt.Println(val[0]["hello"]) 
} 

Lien de terrain de jeu:

https://play.golang.org/p/ptWuVy64pk

0

map[key_field] est l'interface {}, de sorte que vous devez utiliser l'affirmation de type envue d'obtenir le type droit de celui-ci ([] octet).

vous êtes ici:

if needString,ok := map[key_field].([]byte); ok { 
     fmt.Println(string(needString)) 
    }