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
Lepaskan: 2024-12-05 19:10:11
asal
213 orang telah melayarinya

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
Salin selepas log masuk

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))
}
Salin selepas log masuk

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))
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan