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
Patricia Arquetteasal
2024-12-11 00:32:11367semak imbas

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

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

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
}

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

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!

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