Maison > développement back-end > Golang > Pourquoi mon code Go génère-t-il une erreur « affectation à une entrée dans une carte nulle » lors de la création d'une carte YAML ?

Pourquoi mon code Go génère-t-il une erreur « affectation à une entrée dans une carte nulle » lors de la création d'une carte YAML ?

Mary-Kate Olsen
Libérer: 2024-12-05 19:10:11
original
209 Les gens l'ont consulté

Why Does My Go Code Produce a

Résolution de l'erreur d'exécution dans l'attribution de la carte

Un développeur rencontre l'erreur d'exécution "affectation à une entrée dans une carte nulle" lors de la tentative de création d'une carte et convertissez-le en YAML. Le code a pour but de générer une structure comme ceci :

uid :
  kasi:
    cn: Chaithra
    street: fkmp
  nandan:
    cn: Chaithra
    street: fkmp
  remya:
    cn: Chaithra
    street: fkmp
Copier après la connexion

Le code en question est le suivant :

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {
        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
}
Copier après la connexion

L'erreur vient du fait que la carte interne, "uid" , n'est pas initialisé avant d'attribuer des valeurs à ses entrées. Pour résoudre ce problème, le code peut être modifié comme suit :

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    m["uid"] = make(map[string]T) // Initialize the inner map here
    for _, name := range names {
        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
}
Copier après la connexion

En initialisant la carte interne, nous nous assurons qu'elle existe et qu'elle peut se voir attribuer des valeurs sans générer d'erreur d'exécution. Cet ajustement permet au code de générer la structure de carte souhaitée et de la convertir avec succès en YAML.

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