Rumah > Artikel > pembangunan bahagian belakang > Bolehkah saya Mengakses Kaedah Struktur Asas dalam Go Apabila Subtaip?
Kaedah Lebih Muatan dan Subtaip dalam struct Go
Pertimbangkan kod Go berikut:
package main import "fmt" type Human struct { name string age int phone string } type Employee struct { Human // Embedding company string } func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone) } func (e *Employee) SayHi() { fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name, e.company, e.phone) } func main() { sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() }
Kod ini menunjukkan kaedah terlebih beban, di mana kaedah SayHi ditakrifkan dalam kedua-dua struktur Manusia dan Pekerja. Apabila kaedah digunakan pada pembolehubah jenis Pekerja, kaedah dalam struct Pekerja dipanggil.
Mengakses Kaedah Struktur Asas
Seseorang mungkin tertanya-tanya sama ada ia mungkin untuk menggunakan kaedah SayHi yang ditakrifkan dalam struct Manusia pada contoh Pekerja. Dalam Go, mengakses kaedah struct asas adalah mudah. Untuk melakukan ini, rujuk kepada jenis terbenam menggunakan nama ahli struct, seperti yang ditunjukkan di bawah:
sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() // Calls Employee.SayHi sam.Human.SayHi() // Calls Human.SayHi
Kod ini menunjukkan bahawa mengakses kaedah struct terbenam boleh dilakukan dengan lancar. Outputnya ialah:
Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX Hi, I am Sam you can call me on 111-888-XXXX
Atas ialah kandungan terperinci Bolehkah saya Mengakses Kaedah Struktur Asas dalam Go Apabila Subtaip?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!