Rumah pembangunan bahagian belakang Golang Terokai prinsip kaedah dengan nama yang sama di Golang

Terokai prinsip kaedah dengan nama yang sama di Golang

Feb 23, 2024 pm 10:51 PM
Kaedah dengan nama yang sama Kaedah terlebih beban mekanisme golang

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()
}
Salin selepas log masuk

在上面的代码中,我们定义了Person结构体和两个同名方法ShowInfo,分别是func (p Person) ShowInfo()func (p *Person) ShowInfo()。在main函数中,我们创建了两个人物对象person1person2,分别是Person类型和*Person类型,然后分别调用了它们的ShowInfo方法。

结果表明,尽管这两个方法名称相同,但由于接收者类型不同,它们实际上是不同的方法。对于person1.ShowInfo(),会调用值接收者的方法,而对于person2.ShowInfo()rrreee

Dalam kod di atas, kami mentakrifkan struktur 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!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mengapa bahasa Go tidak menyokong konsep reka bentuk kaedah lebih muatan? Mengapa bahasa Go tidak menyokong konsep reka bentuk kaedah lebih muatan? Apr 04, 2024 am 09:00 AM

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.

Sebab dan penyelesaian mengapa kaedah terlebih beban dalam bahasa Go tidak boleh dilaksanakan Sebab dan penyelesaian mengapa kaedah terlebih beban dalam bahasa Go tidak boleh dilaksanakan Apr 03, 2024 pm 12:33 PM

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 .

Perbincangan mendalam tentang isu kelebihan beban kaedah dalam bahasa Go Perbincangan mendalam tentang isu kelebihan beban kaedah dalam bahasa Go Apr 03, 2024 pm 01:36 PM

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.

Kaedah analisis beban berlebihan fungsi Golang Kaedah analisis beban berlebihan fungsi Golang May 16, 2023 am 08:36 AM

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

Cara melaksanakan lebihan kaedah dalam bahasa Go Cara melaksanakan lebihan kaedah dalam bahasa Go Apr 03, 2024 pm 12:15 PM

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.

Adakah golang menyokong kaedah dengan nama yang sama? Adakah golang menyokong kaedah dengan nama yang sama? Dec 08, 2022 pm 07:29 PM

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.

Bagaimana untuk menentukan kaedah yang paling sepadan dalam mekanisme beban lampau fungsi Java? Bagaimana untuk menentukan kaedah yang paling sepadan dalam mekanisme beban lampau fungsi Java? Apr 26, 2024 am 09:06 AM

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

Alternatif untuk mengendalikan lebihan kaedah secara elegan dalam Go Alternatif untuk mengendalikan lebihan kaedah secara elegan dalam Go Apr 03, 2024 am 10:15 AM

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.

See all articles