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
Barbara Streisandasal
2024-12-06 16:47:18146semak imbas

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)

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

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

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!

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