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
Mary-Kate Olsenoriginal
2024-12-05 19:10:11208parcourir

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

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

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

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!

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