Rumah >pembangunan bahagian belakang >Golang >Mengapa Kod My Go Menghasilkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Peta YAML?

Mengapa Kod My Go Menghasilkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Peta YAML?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 19:10:11209semak imbas

Why Does My Go Code Produce a

Mengatasi Ralat Masa Jalan dalam Tugasan Peta

Pemaju menghadapi ralat masa jalan "tugasan untuk masuk dalam peta sifar" semasa cuba mencipta peta dan tukarkannya kepada YAML. Kod ini bertujuan untuk menghasilkan struktur seperti ini:

uid :
  kasi:
    cn: Chaithra
    street: fkmp
  nandan:
    cn: Chaithra
    street: fkmp
  remya:
    cn: Chaithra
    street: fkmp

Kod yang dimaksudkan adalah seperti berikut:

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

Ralat berpunca daripada fakta bahawa peta dalaman, "uid" , tidak dimulakan sebelum memberikan nilai kepada entrinya. Untuk membetulkan isu ini, kod boleh diubah suai seperti berikut:

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

Dengan memulakan peta dalaman, kami memastikan ia wujud dan boleh diberikan nilai tanpa menimbulkan ralat masa jalan. Pelarasan ini membolehkan kod menjana struktur peta yang diingini dan berjaya menukarnya kepada YAML.

Atas ialah kandungan terperinci Mengapa Kod My Go Menghasilkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Peta YAML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn