Saya tidak tahu cara menginisialisasi struct bersarang. Temukan contohnya di sini: http://play.golang.org/p/NL6VXdHrjh
package main
type Configuration struct {
Val string
Proxy struct {
Address string
Port string
}
}
func main() {
c := &Configuration{
Val: "test",
Proxy: {
Address: "addr",
Port: "80",
},
}
}
Jawaban:
Nah, ada alasan khusus untuk tidak menjadikan Proxy struct sendiri?
Bagaimanapun Anda memiliki 2 opsi:
Cara yang tepat, cukup pindahkan proxy ke struct miliknya sendiri, misalnya:
Cara yang kurang tepat dan jelek tapi masih berhasil:
sumber
Jika Anda tidak ingin menggunakan definisi struct terpisah untuk struct bersarang dan Anda tidak menyukai metode kedua yang disarankan oleh @OneOfOne, Anda dapat menggunakan metode ketiga ini:
Anda dapat memeriksanya di sini: https://play.golang.org/p/WoSYCxzCF2
sumber
c.Proxy.Address = `127.0.0.1`
c.Proxy.Port = `8080`
Apakah ada cara untuk menginisialisasi nilai-nilai tersebut selama&Configuration{}
penugasan?Proxy
sebagai struct sendiri, lihat metode pertama dalam jawaban oleh @OneOfOneTentukan
Proxy
struct Anda secara terpisah, di luarConfiguration
, seperti ini:Lihat http://play.golang.org/p/7PELCVsQIc
sumber
P Proxy
sebuah array?Anda juga memiliki opsi ini:
sumber
Proxy
sebuah array?Satu gotcha muncul ketika Anda ingin membuat instance tipe publik yang ditentukan dalam paket eksternal dan tipe itu menyematkan tipe lain yang privat.
Contoh:
Bagaimana Anda membuat contoh
Duck
di program Anda sendiri? Inilah yang terbaik yang bisa saya hasilkan:sumber
cannot refer to unexported field or method
kesalahan.Anda juga dapat mengalokasikan menggunakan
new
dan menginisialisasi semua bidang dengan tanganLihat di taman bermain: https://play.golang.org/p/sFH_-HawO_M
sumber
Anda dapat menentukan struct dan membuat objeknya di struct lain seperti yang telah saya lakukan di bawah ini:
Semoga membantu Anda :)
sumber
Anda perlu mendefinisikan ulang struct tak bernama selama
&Configuration{}
https://play.golang.org/p/Fv5QYylFGAY
sumber