Maison  >  Article  >  développement back-end  >  Comment récupérer en toute sécurité les valeurs d'une carte Go avec différents types de données ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 10:26:02721parcourir

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",
}

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)

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.
}

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!

Déclaration:
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