Rumah > Artikel > pembangunan bahagian belakang > Kaedah analisis beban berlebihan fungsi Golang
Dalam Golang, lebihan fungsi (Lebih muat) tidak disokong kerana nama fungsi adalah unik dan mentakrifkan dua fungsi dengan nama yang sama dalam skop yang sama adalah tidak dibenarkan. Namun begitu, Golang memberikan alternatif kepada kaedah lebihan beban iaitu kaedah terlebih beban. Kaedah Overloading ialah kaedah yang mentakrifkan kaedah dengan nama yang sama dalam kelas, tetapi senarai parameternya berbeza. Dalam artikel ini, kita akan belajar tentang kaedah lebihan beban di Golang secara terperinci.
Di Golang, lebihan kaedah merujuk kepada mentakrifkan berbilang fungsi dengan nama yang sama tetapi senarai parameter yang berbeza dalam struktur (struktur). Fungsi ini dipanggil kaedah terlebih beban. Apabila program memanggil kaedah dalam struktur, Golang akan membuat kesimpulan kaedah yang harus dipanggil berdasarkan nama kaedah dan nombor serta jenis parameter fungsi.
Di bawah ini kami menggunakan contoh untuk menggambarkan penggunaan kaedah lebih muatan:
type Calculator struct { } func (c *Calculator) Add(a, b int) int { return a + b } func (c *Calculator) Add(a, b, c int) int { return a + b + c }
Dalam kod di atas, kami mentakrifkan struktur A bernama Kalkulator mengandungi dua kaedah Tambah, satu menerima dua parameter integer dan satu lagi menerima tiga parameter integer. Kedua-dua kaedah mempunyai nama yang sama, tetapi senarai parameter mereka berbeza.
Sekarang mari kita uji dua kaedah ini:
func main() { c := Calculator{} fmt.Println(c.Add(1, 2)) // 输出:3 fmt.Println(c.Add(1, 2, 3)) // 输出:6 }
Dalam kod di atas, kita mula-mula mencipta objek Kalkulator c, dan kemudian kita memanggil kaedah Tambah objek ini, menghantar dua parameter integer, hasil keluaran ialah 3. Kemudian kami memanggil kaedah Tambah sekali lagi, kali ini memasukkan tiga parameter integer, dan hasil output ialah 6.
Contoh ini menggambarkan penggunaan kaedah lebihan beban di Golang.
Apabila menggunakan kaedah lebih muatan, anda perlu memberi perhatian kepada perkara berikut:
Dalam Golang, kaedah overriding (Method Overriding) merujuk kepada mentakrifkan kaedah dengan nama yang sama dengan kelas induk dalam subkelas. Kaedah subkelas akan mengatasi kaedah kelas induk Apabila program memanggil kaedah ini, kaedah subkelas akan dipanggil dan bukannya kaedah kelas induk. Tidak seperti kaedah terlebih beban, kaedah mengatasi tidak melibatkan parameter kaedah.
Di bawah ini kami menggunakan kod untuk menggambarkan perbezaan antara kelebihan beban kaedah dan liputan kaedah:
type Parent struct { } func (p *Parent) Say() { fmt.Println("I am the parent.") } type Child struct { Parent } func (c *Child) Say() { fmt.Println("I am the child.") } func main() { p := Parent{} c := Child{} p.Say() // 输出:I am the parent. c.Say() // 输出:I am the child. }
Dalam kod di atas, kami mula-mula mentakrifkan struct dipanggil Parent, yang mengandungi kaedah Say. Kemudian kami mentakrifkan struct Kanak-kanak, yang mewarisi Ibu Bapa, dan juga mentakrifkan kaedah Katakan. Dalam fungsi utama, kami mencipta objek Induk p dan objek Anak c, dan memanggil kaedah Sebut mereka. Hasil pelaksanaan ialah p mengeluarkan "Saya ibu bapa." dan c mengeluarkan "Saya adalah anak."
Pada masa yang sama, kaedah lebihan beban tidak dilaksanakan dalam Ibu Bapa dan Anak. Jika kami cuba menentukan berbilang kaedah dengan nama yang sama tetapi senarai parameter yang berbeza dalam Ibu Bapa atau Anak, pengkompil akan melaporkan ralat.
Ringkasnya, kelebihan beban kaedah dan liputan kaedah adalah dua konsep penting dalam pengaturcaraan berorientasikan objek, masing-masing menyelesaikan masalah parameter kaedah yang berbeza dan definisi berulang kaedah dalam kelas induk dan anak. Walaupun Golang tidak menyokong kaedah lebih muatan dalam erti kata tradisional, melalui alternatif kaedah lebih muatan, kita boleh mencapai penggunaan semula kod dan pengkapsulan logik.
Atas ialah kandungan terperinci Kaedah analisis beban berlebihan fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!