Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memudahkan Permulaan Struktur Bersarang dalam Go?

Bagaimanakah Saya Boleh Memudahkan Permulaan Struktur Bersarang dalam Go?

Patricia Arquette
Lepaskan: 2024-12-11 00:32:11
asal
309 orang telah melayarinya

How Can I Simplify Nested Struct Initialization in Go?

Permulaan Literal Struktur Bersarang dalam Go

Apabila melaksanakan struktur data yang kompleks dalam Go, memulakan struct bersarang boleh menjadi satu cabaran. Dalam sesetengah kes, adalah wajar untuk memulakan struktur ini secara langsung, tanpa mentakrifkan secara jelas setiap tahap bersarang.

Pernyataan Masalah

Pertimbangkan struct berikut:

type tokenRequest struct {
    auth struct {
        identity struct {
            methods  []string
            password struct {
                user struct {
                    name   string
                    domain struct {
                        id string
                    }
                    password string
                }
            }
        }
    }
}
Salin selepas log masuk

Percubaan naif untuk memulakan struct ini mungkin kelihatan seperti ini:

req := &tokenRequest{
    auth: struct {
        identity: struct {
            methods: []string{"password"},
            password: {
                user: {
                    name: os.Username,
                    domain: {
                        id: "default",
                    },
                    password: os.Password,
                },
            },
        },
    },
}
Salin selepas log masuk

Penyelesaian: Jenis Struktur Dinamakan

Kunci untuk mempermudahkan permulaan ini ialah menggunakan jenis struct bernama. Ini membolehkan anda mentakrifkan struktur sekali dan menggunakannya di beberapa tempat:

type domain struct {
    id string
}

type user struct {
    name     string
    domain   domain
    password string
}

type password struct {
    user user
}

type identity struct {
    methods  []string
    password password
}

type auth struct {
    identity identity
}

type tokenRequest struct {
    auth auth
}
Salin selepas log masuk

Dengan jenis struct yang dinamakan, anda kini boleh memulakan struct tokenRequest secara terus:

req := &tokenRequest{
    auth: auth{
        identity: identity{
            methods: []string{"password"},
            password: password{
                user: user{
                    name: os.Username,
                    domain: domain{
                        id: "default",
                    },
                    password: os.Password,
                },
            },
        },
    },
}
Salin selepas log masuk

Ini menyediakan kaedah yang lebih mudah dan ringkas untuk memulakan struct bersarang dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memudahkan Permulaan 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