Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengemas kini Nilai Struktur Bersarang dalam Go?

Bagaimana untuk Mengemas kini Nilai Struktur Bersarang dalam Go?

Susan Sarandon
Lepaskan: 2024-12-05 14:46:10
asal
224 orang telah melayarinya

How to Update Nested Struct Values in Go?

Mengemas kini Nilai Struktur dalam Go

Dalam Go, struct ialah jenis nilai, yang bermaksud menugaskan satu struct kepada yang lain menyalin nilainya dan bukannya mencipta rujukan. Ini boleh membawa kepada tingkah laku yang tidak dijangka apabila cuba mengubah suai nilai dalam struktur bersarang.

Pertimbangkan coretan kod berikut:

ftr := FTR{}

err := yaml.Unmarshal([]byte(yamlFile), &ftr)

for index, element := range ftr.Mod {
    switch element.Type {
    case "aaa", "bbbb":
        element.Type = "cccc"
    case "htr":
        element.Type = "com"
    case "no":
        element.Type = "jnodejs"
    case "jdb":
        element.Type = "tomcat"
    }
}
Salin selepas log masuk

Niatnya adalah untuk mengemas kini medan Jenis setiap elemen Mod dalam struktur ftr berdasarkan satu siri syarat. Walau bagaimanapun, selepas kod dilaksanakan, medan Jenis bagi setiap elemen kekal tidak berubah.

Tingkah laku ini disebabkan oleh fakta bahawa gelung julat berulang pada salinan kepingan ftr.Mod. Akibatnya, sebarang pengubahsuaian yang dibuat pada pembolehubah elemen dalam gelung tidak ditunjukkan dalam kepingan ftr.Mod asal.

Untuk menyelesaikan isu ini dan mengemas kini nilai dengan betul dalam struktur ftr, anda boleh menggunakan lelaran berasaskan indeks bukannya berkisar di atas kepingan. Ini membolehkan anda mengubah suai nilai secara terus dalam kepingan asal:

type FTR struct {
    Id       string     
    Mod      []Mod  
}

for index := range ftr.Mod{
    switch ftr.Mod[index].Type {
    case "aaa", "bbbb":
        ftr.Mod[index].Type = "cccc"
    case "htr":
        ftr.Mod[index].Type = "com"
    case "no":
        ftr.Mod[index].Type = "jnodejs"
    case "jdb":
        ftr.Mod[index].Type = "tomcat"
    }
}
Salin selepas log masuk

Dengan melelaran ke atas indeks hirisan ftr.Mod dan mengubah suai terus elemen yang sepadan, anda memastikan bahawa struktur ftr asal dikemas kini sebagai dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Nilai Struktur Bersarang 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