Rumah > pembangunan bahagian belakang > Golang > Cara mengakses elemen struktur bersarang

Cara mengakses elemen struktur bersarang

王林
Lepaskan: 2024-02-09 08:00:11
ke hadapan
919 orang telah melayarinya

Cara mengakses elemen struktur bersarang

PHP Editor Xigua akan memperkenalkan anda cara untuk mengakses elemen struktur bersarang. Dalam pengaturcaraan, struktur bersarang sering digunakan untuk mewakili struktur data yang kompleks, seperti tatasusunan atau objek berbilang peringkat. Untuk mengakses elemen dalam struktur bersarang kita perlu menggunakan sintaks dan kaedah yang sesuai. Artikel ini akan menerangkan secara terperinci cara mengakses dan mendapatkan elemen dalam struktur bersarang langkah demi langkah mengikut tahap, membantu pembaca lebih memahami dan memproses data struktur bersarang. Sama ada anda seorang pemula atau pembangun yang berpengalaman, artikel ini akan memberikan anda petua dan contoh praktikal untuk membantu anda menangani keperluan untuk mengakses elemen struktur bersarang dengan mudah.

Kandungan soalan

Saya mempunyai struktur seperti ini. Saya mahu menghuraikan json saya ke dalam struktur ini. Tetapi saya tidak boleh mengakses struktur bersarang.

Saya harap saya boleh mencapai substruktur yang serupa, tetapi saya tidak dapat:

func main() {
    str := `[{
        "applicationdefaults":  {
            "applicationpoolname": "defaultapppool",
                ....
    }]`

    mdl := foo(str)

    // mdl.applicationdefaults ?? i can't reach like this. there are only a few functions like: append!, last! , print!, range!, reverse!, sort!, var!
}
Salin selepas log masuk

Ada sesiapa boleh tolong?

Struktur saya:

package model

type sitesdetails []struct {
    applicationdefaults struct {
        applicationpoolname string      `json:"applicationpoolname"`
        enabledprotocols    string      `json:"enabledprotocols"`
        attributes          string      `json:"attributes"`
        childelements       string      `json:"childelements"`
        elementtagname      string      `json:"elementtagname"`
        islocallystored     bool        `json:"islocallystored"`
        methods             interface{} `json:"methods"`
        rawattributes       string      `json:"rawattributes"`
        schema              string      `json:"schema"`
    } `json:"applicationdefaults"`
    applications []string `json:"applications"`
    bindings     []string `json:"bindings"`
    id           int      `json:"id"`
    limits       struct {
        connectiontimeout string      `json:"connectiontimeout"`
        maxbandwidth      int64       `json:"maxbandwidth"`
        maxconnections    int64       `json:"maxconnections"`
        maxurlsegments    int         `json:"maxurlsegments"`
        attributes        string      `json:"attributes"`
        childelements     string      `json:"childelements"`
        elementtagname    string      `json:"elementtagname"`
        islocallystored   bool        `json:"islocallystored"`
        methods           interface{} `json:"methods"`
        rawattributes     string      `json:"rawattributes"`
        schema            string      `json:"schema"`
    } `json:"limits"`
}
Salin selepas log masuk

Ini adalah kod yang saya gunakan untuk menghuraikan json ke dalam struktur:

func foo(resp string) model.SitesDetails {
    data := []byte(resp)

    var m model.SitesDetails
    err := json.Unmarshal(data, &m)
    if err != nil {
        log.Fatal(err)
    }
    return m
}
Salin selepas log masuk

Penyelesaian

Anda sedang membuka slice di sini (kerana sitesdetails 类型是 []struct anda dan json anda bermula dengan tatasusunan), jadi anda sepatutnya boleh mengakses butiran anda melalui

poolName := model[0].ApplicationDefaults.ApplicationPoolName
Salin selepas log masuk

Ini juga menerangkan sebab IDE anda hanya mencadangkan operasi yang boleh digunakan pada kepingan, seperti tambah (yang saya rasa memasukkan kod yang betul untuk ditambahkan pada kepingan anda).

BTW, anda tidak sepatutnya memanggil pembolehubah anda model ,因为这也是你显然用于你的包的名称(你正在使用 model.sitesdetails ), jadi nama pembolehubah anda akan menyembunyikan pakej pada ketika ini - ini boleh menyebabkan kekeliruan yang besar, dan mana-mana IDE yang baik harus memberi amaran kepada anda tentang perkara ini.

Atas ialah kandungan terperinci Cara mengakses elemen struktur bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan