Maison > développement back-end > Golang > le corps du texte

Comment récupérer en toute sécurité les valeurs d'une carte Go avec différents types de données ?

Susan Sarandon
Libérer: 2024-11-12 10:26:02
original
722 Les gens l'ont consulté

How to Safely Fetch Values from a Go Map with Different Data Types?

Récupération de valeurs à partir d'une carte Go

Scénario de problème

Considérez la carte Go suivante :

res := map[string]interface{}{
    "Event_dtmReleaseDate": "2009-09-15 00:00:00 +0000 +00:00",
    "Trans_strGuestList": nil,
    "strID":              "TSTB",
}
Copier après la connexion

L'objectif est pour récupérer les valeurs suivantes de la carte :

  • Event_dtmReleaseDate
  • strID
  • Trans_strGuestList

Solution

To Pour accéder aux valeurs depuis une carte Go, vous devez utiliser la clé associée à la valeur. Cependant, dans ce cas, la carte contient différents types de valeurs, tels que des chaînes et nil.

Utilisation des assertions de type

Une façon de récupérer des valeurs consiste à utiliser le type assertions, comme démontré ci-dessous :

id := res["strID"].(string)
Copier après la connexion

Cette ligne récupère la valeur associée à la clé "strID" et affirme qu'elle est de type chaîne.

Vérification de type sécurisée

Pour éviter les paniques potentielles dues à des types incorrects ou à des clés manquantes, envisagez d'utiliser l'approche sûre suivante :

var id string
var ok bool
if x, found := res["strID"]; found {
    if id, ok = x.(string); !ok {
        // Handle errors if the value is not a string.
    }
} else {
    // Handle errors if the key does not exist in the map.
}
Copier après la connexion

Ce code vérifie si la carte contient la clé "strID". Si c'est le cas, il tente de convertir la valeur en chaîne et l'attribue à la variable id. Cette approche garantit que le code ne paniquera pas en cas d'incompatibilité de type ou de clés manquantes.

Notes supplémentaires

  • Pour plus d'informations sur les cartes Go, reportez-vous à la documentation Go : http://golang.org/doc/effective_go.html#maps.
  • Pour plus d'informations sur les assertions de type et les conversions d'interface, visitez : http://golang.org/doc/effective_go.html #interface_conversions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal