Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Penerima Kaedah dalam Go Boleh Menghapuskan Lebihan Fungsi untuk Struktur Serupa?
Menggunakan Penerima Kaedah Go untuk Mengelakkan Lebihan Fungsi
Dalam Go, adalah perkara biasa untuk menghadapi situasi di mana berbilang struct berkongsi nama medan dan operasi yang serupa. Untuk mengelakkan pengulangan kod semasa mentakrifkan fungsi untuk struct ini, pertimbangkan untuk memanfaatkan penerima kaedah.
Bayangkan anda mempunyai dua struct, Permainan dan ERP, dengan medan yang termasuk Nama dan Versi. Anda ingin mencipta fungsi untuk mencetak pembolehubah Versi untuk setiap struct.
Secara tradisinya, anda perlu mentakrifkan fungsi berasingan untuk Permainan dan ERP:
<code class="go">type Game struct { Name string MultiplayerSupport bool Genre string Version string } type ERP struct { Name string MRPSupport bool SupportedDatabases []string Version string } func (g *Game) PrintVersion() { fmt.Println("Game Version:", g.Version) } func (e *ERP) PrintVersion() { fmt.Println("ERP Version:", e.Version) }</code>
Walau bagaimanapun, pendekatan ini memperkenalkan kod pertindihan. Untuk mengatasinya, Go menyediakan penerima kaedah. Begini cara anda boleh melaksanakannya:
<code class="go">type Version string func (v Version) PrintVersion() { fmt.Println("Version:", v) } type Game struct { Name string MultiplayerSupport bool Genre string Version } type ERP struct { Name string MRPSupport bool SupportedDatabases []string Version }</code>
Dengan mentakrifkan jenis Versi dan melaksanakan kaedah PrintVersion untuknya, anda boleh menggunakan semula kaedah ini merentas struct anda melalui gubahan:
<code class="go">func main() { g := Game{ "Fear Effect", false, "Action-Adventure", "1.0.0", } g.Version.PrintVersion() e := ERP{ "Logo", true, []string{"ms-sql"}, "2.0.0", } e.Version.PrintVersion() }</code>
Ini pendekatan bukan sahaja mengelakkan lebihan fungsi tetapi juga membolehkan anda mengekalkan antara muka yang konsisten untuk mengakses medan Versi merentas berbilang struct.
Atas ialah kandungan terperinci Bagaimanakah Penerima Kaedah dalam Go Boleh Menghapuskan Lebihan Fungsi untuk Struktur Serupa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!