Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah analisis beban berlebihan fungsi Golang

Kaedah analisis beban berlebihan fungsi Golang

WBOY
WBOYasal
2023-05-16 08:36:372508semak imbas

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.

  1. Apakah kaedah lebihan beban di Golang?

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.

  1. Contoh

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.

  1. Nota mengenai lebihan kaedah

Apabila menggunakan kaedah lebih muatan, anda perlu memberi perhatian kepada perkara berikut:

  1. Kaedah Terlebih Beban mesti ditakrifkan dalam struktur yang sama.
  2. Kaedah terlebih muatan mesti mempunyai senarai parameter yang berbeza.
  3. Kaedah terlebih muatan boleh mempunyai jenis pulangan yang berbeza, tetapi kaedah tersebut tidak boleh hanya mempunyai kaedah dengan jenis pulangan yang berbeza dan parameter yang sama.
  4. Jika kaedah terlebih beban mempunyai nama yang sama dengan kaedah dalam struktur lain, ia mesti mempunyai senarai parameter yang berbeza, jika tidak, pengkompil akan melaporkan ralat.
  5. Jika lebihan kaedah diperlukan untuk jenis tertentu, jenis tersebut mestilah jenis yang ditentukan oleh pembangun, bukan jenis asli (seperti int, rentetan, dll.).
  6. Perbezaan antara kaedah overriding dan kaedah overloading

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn