Rumah > pembangunan bahagian belakang > Golang > Mengapa Saya Mendapat 'Ralat Masa Jalanan: Tugasan untuk Kemasukan dalam Peta Tiada' dalam Go?

Mengapa Saya Mendapat 'Ralat Masa Jalanan: Tugasan untuk Kemasukan dalam Peta Tiada' dalam Go?

Barbara Streisand
Lepaskan: 2024-12-06 16:47:18
asal
145 orang telah melayarinya

Why Am I Getting a

Memahami "Ralat Masa Jalan: Tugasan untuk Masuk dalam Peta Tiada"

Apabila cuba menggunakan struktur data peta terbina dalam Go, anda boleh menghadapi "ralat masa jalan yang ditakuti: tugasan kepada kemasukan dalam peta kosong." Ralat ini berpunca daripada percubaan untuk memberikan nilai kepada kunci yang tidak wujud dalam peta sifar (atau tidak dimulakan).

Dalam kes khusus anda, anda cuba menjana fail YAML daripada peta, di mana setiap kunci mewakili "uid" dan setiap nilai ialah peta yang mengandungi maklumat tentang individu. Walau bagaimanapun, kod anda menghadapi ralat masa jalan.

Penyelesaian: Memulakan Peta Dalam

Isu timbul kerana peta dalaman anda ("uid") tidak dimulakan sebelum anda cuba tetapkan nilai pada kuncinya (cth., "kasi," "remya" dan "nandan"). Untuk menyelesaikan masalah ini, cuma tambahkan baris berikut sebelum gelung for:

m["uid"] = make(map[string]T)
Salin selepas log masuk

Barisan ini memulakan peta dalam dan mengaitkannya dengan kekunci "uid" dalam peta luar anda (m). Kini, anda boleh menetapkan nilai dengan selamat pada kekunci dalam peta dalaman:

m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
Salin selepas log masuk

Kod Ditapis

Berikut ialah kod anda dengan pembetulan yang sedia ada:

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)
    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 pengubahsuaian ini, anda tidak akan menghadapi "ralat masa jalan: penugasan kepada entri dalam peta kosong." Kod anda akan berjaya menjana fail YAML dengan struktur yang diingini.

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Ralat Masa Jalanan: Tugasan untuk Kemasukan dalam Peta Tiada' dalam Go?. 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