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
Susan Sarandonasal
2024-12-05 14:46:10224semak imbas

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

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

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!

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