Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengelakkan Penduaan Kod Apabila Melaksanakan Kaedah Yang Sama pada Structs dengan Medan Dikongsi?
Amalan Terbaik untuk Menggunakan Fungsi Sepunya Merentasi Struktur dengan Medan Sama
Dalam senario di mana dua struktur mempunyai medan yang sama, adalah wajar untuk mengelakkan pertindihan kod apabila menentukan kaedah yang beroperasi pada medan tersebut.
Jenis Tersuai sebagai Penerima Kaedah
Pendekatan yang disyorkan ialah memperkenalkan jenis tersuai (mis., Versi) yang berfungsi sebagai penerima kaedah. Memandangkan semua jenis tersuai boleh digunakan sebagai penerima kaedah, teknik ini membolehkan penciptaan satu kaedah yang boleh digunakan pada berbilang struct.
Komposisi
Setelah tersuai jenis ditakrifkan, ia boleh dimasukkan ke dalam struct menggunakan komposisi. Ini melibatkan membenamkan jenis tersuai dalam struct, pada asasnya mencipta struktur bersarang.
Contoh
Pertimbangkan coretan kod berikut:
<code class="go">type Version string func (v Version) PrintVersion() { fmt.Println("Version is", v) } type Game struct { Name string MultiplayerSupport bool Genre string Version } type ERP struct { Name string MRPSupport bool SupportedDatabases []string Version }</code>
Di sini, jenis Versi berfungsi sebagai penerima kaedah, dan kaedah PrintVersionnya boleh diakses oleh kedua-dua struct Permainan dan ERP disebabkan medan Versi terbenamnya.
Penggunaan
Medan Versi terbenam boleh digunakan dan diubah suai sama seperti medan lain:
<code class="go">main() { g := Game{ "Fear Effect", false, "Action-Adventure", "1.0.0", } g.PrintVersion() // Version is 1.0.0 e := ERP{ "Logo", true, []string{"ms-sql"}, "2.0.0", } e.PrintVersion() // Version is 2.0.0 }</code>
Dengan menggunakan pendekatan ini, pengulangan kod yang dikaitkan dengan kaedah pendua dihapuskan sambil mengekalkan fleksibiliti dan keselamatan jenis.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Penduaan Kod Apabila Melaksanakan Kaedah Yang Sama pada Structs dengan Medan Dikongsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!