Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan polimorfisme dalam golang
Tiada polimorfisme tradisional dalam Go, tetapi anda boleh menggunakan antara muka dan refleksi untuk mencapai kesan yang serupa: tentukan antara muka dan jelaskan set kaedah. Buat berbilang jenis yang melaksanakan antara muka ini. Gunakan refleksi untuk memanggil kaedah secara dinamik tanpa mengetahui jenis tertentu.
Bagaimana untuk melaksanakan polimorfisme
dalam Go?
Tiada polimorfisme dalam erti kata tradisional dalam Go, tetapi antara muka dan mekanisme pantulan boleh digunakan untuk mencapai gelagat seperti polimorfik.
Antaramuka:
Refleksi:
Langkah pelaksanaan:
Contoh:
<code class="go">type Shape interface { Area() float64 } type Square struct { side float64 } func (s *Square) Area() float64 { return s.side * s.side } type Circle struct { radius float64 } func (c *Circle) Area() float64 { return math.Pi * c.radius * c.radius } func main() { shapes := []Shape{ &Square{side: 5}, &Circle{radius: 5}, } for _, s := range shapes { fmt.Println("Area:", reflect.ValueOf(s).MethodByName("Area").Call([]reflect.Value{})[0].Float()) } }</code>
Kelebihan:
Kelemahan:
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan polimorfisme dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!