Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh menggunakan parameter dan antara muka kaedah generik untuk memproses kedua-dua kepingan objek Mamalia dan Manusia di Golang?
Parameter Kaedah Generik di Golang
Di Golang, untuk membolehkan fungsi menerima sebarang jenis, parameter kaedah generik boleh digunakan. Apabila kaedah memerlukan jenis yang mempunyai sifat tertentu, antara muka boleh digunakan. Di bawah ialah contoh di mana fungsi perlu menerima jenis yang mempunyai sifat ID.
<code class="go">type MammalImpl struct { ID int Name string } func (m MammalImpl) GetID() int { return m.ID } func (m MammalImpl) GetName() string { return m.Name } type HumanImpl struct { MammalImpl HairColor string } func (h HumanImpl) GetHairColor() string { return h.HairColor }</code>
Dalam kod ini, antara muka telah ditakrifkan bersama dengan pelaksanaan terbenamnya untuk Mammal dan Manusia. Ini memastikan kedua-dua jenis boleh digunakan dalam fungsi Count, yang kini mengakses sifat ID secara tidak langsung melalui kaedah GetID.
<code class="go">func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) } return &IDs }</code>
Dengan menggunakan parameter dan antara muka kaedah generik, fungsi ini kini boleh memproses kedua-dua hirisan objek Mammal dan Manusia.
Berikut ialah kod kerja yang lengkap:
<code class="go">import ( "fmt" "strconv" ) type Mammal interface { GetID() int GetName() string } type Human interface { Mammal GetHairColor() string } type MammalImpl struct { ID int Name string } func (m MammalImpl) GetID() int { return m.ID } func (m MammalImpl) GetName() string { return m.Name } type HumanImpl struct { MammalImpl HairColor string } func (h HumanImpl) GetHairColor() string { return h.HairColor } func Count(ms []Mammal) *[]string { IDs := make([]string, len(ms)) for i, m := range ms { IDs[i] = strconv.Itoa(m.GetID()) } return &IDs } func main() { mammals := []Mammal{ MammalImpl{1, "Carnivorious"}, MammalImpl{2, "Ominivorious"}, } humans := []Mammal{ HumanImpl{MammalImpl: MammalImpl{ID: 1, Name: "Peter"}, HairColor: "Black"}, HumanImpl{MammalImpl: MammalImpl{ID: 2, Name: "Paul"}, HairColor: "Red"}, } numberOfMammalIDs := Count(mammals) numberOfHumanIDs := Count(humans) fmt.Println(numberOfMammalIDs) fmt.Println(numberOfHumanIDs) }</code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan parameter dan antara muka kaedah generik untuk memproses kedua-dua kepingan objek Mamalia dan Manusia di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!