Rumah > Artikel > pembangunan bahagian belakang > Terokai penukaran struktur kepada antara muka dalam golang
Terdapat dua kaedah untuk menukar struktur kepada antara muka: membenamkan struktur atau menggunakan corak penyesuai. Pembenaman ialah pendekatan yang lebih langsung yang mencipta jenis baharu dengan medan struktur dan kaedah antara muka. Corak Penyesuai menggunakan jenis perantaraan yang mengandungi contoh struktur dan melaksanakan antara muka. Antara muka yang ditukar hanya mengandungi kaedah antara muka dan tidak mengandungi medan lain struktur. Kedua-dua kaedah boleh digunakan untuk mencapai kebolehgunaan semula kod berorientasikan objek dan memberikan fleksibiliti dalam menggunakan antara muka yang berbeza dalam sistem.
Penukaran daripada struktur kepada antara muka dalam bahasa Go
Apakah itu struktur dan antara muka?
Struktur kepada penukaran antara muka
1.Membenamkan
Cara paling mudah ialah membenamkan struktur ke dalam antara muka. Ini mencipta jenis baharu yang mempunyai kedua-dua medan struktur dan kaedah antara muka.
type Person struct { Name string Age int } type Personer interface { GetName() string } // 嵌入 Person 到 Personer 4 type EmbeddedPerson struct { Person } func (p EmbeddedPerson) GetName() string { return p.Name }
2. Corak Penyesuai
Pendekatan lain ialah menggunakan corak penyesuai, mencipta jenis baharu yang mengandungi contoh struktur dan melaksanakan antara muka.
type Personer interface { GetName() string } type Person struct { Name string Age int } // PersonAdapter 适配器 type PersonAdapter struct { p *Person } func (a *PersonAdapter) GetName() string { return a.p.Name } func main() { p := Person{"John", 30} pa := &PersonAdapter{&p} fmt.Println(pa.GetName()) // 输出:John }
Nota:
Contoh Praktikal
Andaikan kita mempunyai User
结构体,它包含姓名和电子邮件。我们要创建一个接口 Userer
supaya kita boleh mencari pengguna berdasarkan nama atau e-mel mereka.
Gunakan benam:
type User struct { Name string Email string } type Userer interface { GetName() string GetEmail() string } type EmbeddedUser struct { User } func (u EmbeddedUser) GetName() string { return u.Name } func (u EmbeddedUser) GetEmail() string { return u.Email }
Gunakan mod penyesuai:
type Userer interface { GetName() string GetEmail() string } type User struct { Name string Email string } type UserAdapter struct { user *User } func (ua *UserAdapter) GetName() string { return ua.user.Name } func (ua *UserAdapter) GetEmail() string { return ua.user.Email } func main() { user := User{"John", "john@example.com"} userAdapter := &UserAdapter{&user} fmt.Println(userAdapter.GetName()) // 输出:John fmt.Println(userAdapter.GetEmail()) // 输出:john@example.com }
Atas ialah kandungan terperinci Terokai penukaran struktur kepada antara muka dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!