Terokai prinsip kaedah dengan nama yang sama di Golang
Golang ialah bahasa pengaturcaraan tersusun sumber terbuka yang dibangunkan oleh Google untuk meningkatkan produktiviti pengaturcara. Kaedah adalah konsep penting dalam Golang yang membolehkan fungsi ditakrifkan pada jenis tertentu Fungsi ini dipanggil kaedah. Di Golang, kaedah boleh ditakrifkan pada struktur (struktur), antara muka (antara muka) dan jenis tertentu. Apabila mentakrifkan kaedah dalam struktur atau antara muka, anda boleh menggunakan kaedah dengan nama yang sama Iaitu, dalam jenis yang sama, anda boleh menentukan berbilang kaedah dengan nama yang sama tetapi jenis penerima yang berbeza.
Untuk lebih memahami mekanisme kaedah dengan nama yang sama di Golang, kami akan menggambarkannya melalui contoh kod tertentu. Mula-mula, kami mentakrifkan struktur Orang
dan mentakrifkan dua kaedah dengan nama yang sama ShowInfo
, tetapi jenis penerimanya ialah Orang
dan *Orang
: Person
,并在其上定义两个同名方法ShowInfo
,但他们的接收者类型分别为Person
和*Person
:
package main import "fmt" type Person struct { Name string Age int } func (p Person) ShowInfo() { fmt.Printf("Name: %s, Age: %d ", p.Name, p.Age) } func (p *Person) ShowInfo() { fmt.Printf("Name: %s, Age: %d ", p.Name, p.Age) } func main() { person1 := Person{Name: "Alice", Age: 25} person2 := &Person{Name: "Bob", Age: 30} person1.ShowInfo() person2.ShowInfo() }
在上面的代码中,我们定义了Person
结构体和两个同名方法ShowInfo
,分别是func (p Person) ShowInfo()
和func (p *Person) ShowInfo()
。在main
函数中,我们创建了两个人物对象person1
和person2
,分别是Person
类型和*Person
类型,然后分别调用了它们的ShowInfo
方法。
结果表明,尽管这两个方法名称相同,但由于接收者类型不同,它们实际上是不同的方法。对于person1.ShowInfo()
,会调用值接收者的方法,而对于person2.ShowInfo()
rrreee
Orang
dan dua kaedah dengan nama yang sama ShowInfo
, iaitu func (p Person) ShowInfo() dan func (p *Person) ShowInfo()
. Dalam fungsi utama
, kami mencipta dua objek orang person1
dan person2
, yang terdiri daripada jenis Orang
dan kod>*Orang
jenis, dan kemudian memanggil kaedah ShowInfo
mereka masing-masing. Ternyata walaupun kedua-dua kaedah mempunyai nama yang sama, ia sebenarnya kaedah yang berbeza kerana jenis penerima yang berbeza. Untuk person1.ShowInfo()
, kaedah penerima nilai dipanggil dan untuk person2.ShowInfo()
, kaedah penerima penunjuk dipanggil. Mekanisme ini sangat fleksibel di Golang Dengan menggunakan kaedah dengan nama yang sama, kita boleh memilih untuk menggunakan penerima nilai atau penerima penunjuk mengikut situasi tertentu, seterusnya merealisasikan logik dan corak reka bentuk yang lebih kompleks. Perlu diingatkan bahawa jika berbilang kaedah dengan nama yang sama ditakrifkan dalam jenis yang sama, pengkompil akan membezakannya berdasarkan jenis penerima yang ditakrifkan oleh kaedah tersebut, dan tiada konflik akan berlaku. 🎜🎜Ringkasnya, pemahaman mendalam tentang mekanisme kaedah dengan nama yang sama di Golang adalah sangat penting untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod Melalui demonstrasi contoh kod tertentu, anda boleh memperdalam pemahaman anda tentang konsep ini. Saya berharap kandungan di atas dapat membantu pembaca lebih memahami penggunaan dan prinsip kaedah di Golang. 🎜Atas ialah kandungan terperinci Terokai prinsip kaedah dengan nama yang sama di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bahasa Go tidak menyokong kaedah lebih muatan kerana falsafah reka bentuknya menekankan kesederhanaan, keselarasan dan keselamatan jenis. Kelebihan kaedah boleh memperkenalkan konflik nama, sistem jenis kompleks dan kekeliruan kod. Untuk mengimbangi ini, bahasa Go menyediakan fungsi yang membenarkan penciptaan fungsi dengan nama yang sama tetapi jenis parameter yang berbeza dalam pakej yang sama, serupa dengan kefungsian lebihan kaedah.

Bahasa Go tidak menyokong kaedah lebih muatan disebabkan oleh kerumitan pemeriksaan jenis statik, kehilangan kejelasan dan ketidakserasian dengan antara muka. Alternatif termasuk lebihan fungsi, kaedah antara muka dan polimorfisme. Khususnya, lebihan fungsi membolehkan penciptaan fungsi dengan nama yang sama dengan senarai parameter yang berbeza, kaedah antara muka menggunakan antara muka untuk mentakrifkan kaedah dan melaksanakannya dalam jenis yang berbeza, dan polimorfisme menggunakan penukaran jenis dan penegasan untuk melaksanakan kaedah objek dengan jenis parameter yang berbeza .

Bahasa Go tidak menyokong pemuatan kaedah langsung, tetapi menggunakan antara muka untuk mensimulasikan fungsi yang serupa. Antara muka mentakrifkan satu set kaedah, dan jenis mensimulasikan beban lampau dengan melaksanakan kaedah antara muka Ia menggunakan antara muka yang berbeza untuk mentakrifkan kaedah yang sama dengan senarai parameter yang berbeza, dan mencipta jenis untuk melaksanakan antara muka ini, dengan itu mencapai kesan lebihan kaedah.

Di 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. apa

Pemuatan kaedah tidak disokong dalam bahasa Go, tetapi simulasi antara muka boleh digunakan. Langkah-langkah melebihkan kaedah: 1. Buat antara muka yang mengandungi semua tandatangan yang mungkin; 2. Laksanakan pelbagai kaedah dengan tandatangan yang berbeza untuk melaksanakan antara muka.

Golang menyokong kaedah dengan nama yang sama. Bahasa Go membenarkan penciptaan dua atau lebih kaedah dengan nama yang sama dalam pakej yang sama, tetapi penerima kaedah ini mesti mempunyai jenis yang berbeza Harap maklum bahawa ciri ini tidak tersedia dalam fungsi Go, yang bermaksud bahawa pengguna tidak dibenarkan gunakan kaedah yang sama dalam pakej yang sama Buat kaedah dengan nama yang sama dalam pakej, pengkompil akan membuang ralat jika anda cuba melakukan ini.

Peraturan padanan untuk kelebihan beban fungsi Java ialah: Padanan tepat: Jenis parameter dan nombor sama persis Parameter pembolehubah: Kaedah parameter pembolehubah sepadan dengan sebarang nombor atau jenis parameter Jenis pembungkusan dan penukaran jenis asal: Jenis asas dan jenis pembungkusan boleh ditukar kepada satu sama lain Secara automatik dimuatkan Boxing/unboxing: nilai jenis asas dan objek jenis berbalut boleh ditukar secara automatik kepada jenis kelas terbitan: objek kelas terbitan boleh sepadan dengan parameter jenis kelas asas

Tiada kaedah lebihan beban dalam bahasa Go, tetapi tingkah laku serupa boleh dicapai menggunakan alternatif: Pembolehubah fungsi: Tentukan fungsi dengan set parameter yang berbeza dan simpannya dalam pembolehubah, memanggil fungsi yang sesuai mengikut keperluan. Jenis antara muka: Tentukan jenis antara muka yang mengandungi berbilang kaedah dengan set parameter yang berbeza dan laksanakan antara muka untuk menyediakan tingkah laku tertentu. Jenis bersarang: Mengumpulkan kaedah ke dalam jenis bersarang, di mana setiap jenis bersarang mewakili fungsi dengan nombor atau jenis argumen yang berbeza.
