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!