Golang ialah bahasa yang ditaip kuat, disusun secara statik yang dibangunkan oleh Google. Sintaks dan kecekapannya yang ringkas menjadikannya bahasa pilihan bagi banyak syarikat Internet. Kaedah dengan nama yang sama adalah ciri tatabahasa yang menarik dalam bahasa ini. Artikel ini akan memperkenalkan definisi, senario penggunaan dan langkah berjaga-jaga bagi kaedah Golang dengan nama yang sama.
- Takrif kaedah dengan nama yang sama
Di Golang, kaedah dengan nama yang sama merujuk kepada berbilang kaedah dengan nama kaedah yang sama. Kaedah ini boleh muncul dalam jenis yang sama atau dalam jenis yang berbeza.
Kaedah dengan nama yang sama mesti memenuhi syarat berikut:
(1) Mereka mesti ditakrifkan pada jenis penerima yang berbeza
(2) Mereka mesti mempunyai senarai parameter yang berbeza; > (3) Nilai pulangan mereka boleh berbeza, tetapi nama kaedah mestilah sama.
Sebagai contoh, berikut ialah struktur yang mentakrifkan dua kaedah dengan nama yang sama:
type Person struct{
Name string
Age int
}
func (p Person) Print(){
fmt.Printf("Name: %s, Age: %d", p.Name, p.Age)
}
func (p *Person) Print(){
fmt.Printf("Name: %s, Age: %d", p.Name, p.Age)
}
Salin selepas log masuk
Dalam contoh di atas, struktur Orang mentakrifkan dua kaedah dengan nama yang sama, Cetak. Kaedah Cetak pertama menerima nilai jenis Orang sebagai penerima, manakala kaedah Cetak kedua menerima penunjuk untuk menaip Orang sebagai penerima.
Penggunaan kaedah dengan nama yang sama-
Senario penggunaan kaedah dengan nama yang sama adalah serupa dengan kaedah biasa Anda boleh menggunakan notasi titik untuk memanggil kaedah pada objek , atau anda boleh memanggil kaedah melalui nama taip .
Berikut ialah contoh menggunakan kaedah dengan nama yang sama:
p := Person{
Name: "Tom",
Age: 18,
}
p.Print() // Name: Tom, Age: 18
pp := &p
pp.Print() // Name: Tom, Age: 18
Salin selepas log masuk
Dalam contoh di atas, kami menggunakan objek yang sama untuk memanggil dua kaedah. Memandangkan kaedah Cetak pertama menerima nilai jenis Orang sebagai penerima, kita boleh menggunakan p.Print() untuk memanggilnya. Kaedah Cetak kedua menerima nilai jenis penunjuk sebagai penerima, jadi kita perlu memanggilnya menggunakan penunjuk ke p.
Nota-
Walaupun kaedah dengan nama yang sama disokong di Golang, anda perlu memberi perhatian kepada perkara berikut semasa penggunaan:
( 1 ) Kaedah dengan nama yang sama mesti ditakrifkan pada jenis penerima yang berbeza
(2) Senarai parameter kaedah dengan nama yang sama tidak boleh sama
(3) Nilai pulangan kaedah dengan nama yang sama boleh berbeza;
(4) Jika jenis Jika dua kaedah dengan nama yang sama ditakrifkan, apabila memanggil kaedah pada jenis ini, pengkompil akan memilih kaedah yang sesuai berdasarkan jenis penerima.
Untuk struktur Orang dalam contoh di atas, jika kita mentakrifkannya seperti berikut:
type Person struct{
Name string
Age int
}
func (p *Person) Print(){
fmt.Printf("Name: %s, Age: %d", p.Name, p.Age)
}
func (p *Person) Print(){
fmt.Printf("Name: %s, Age: %d", p.Name, p.Age)
}
Salin selepas log masuk
Pengkompil akan melaporkan ralat berikut:
redeclared method Person.Print
Salin selepas log masuk
Kerana kami tentukan Dua kaedah dengan nama yang sama dengan senarai parameter yang sama.
Ringkasan
Dalam artikel ini, kami memperkenalkan kaedah dengan nama yang sama di Golang. Kaedah dengan nama yang sama ialah ciri sintaks yang menarik yang membolehkan kami mentakrifkan nama kaedah yang sama pada jenis penerima yang berbeza. Terdapat beberapa batasan yang perlu diberi perhatian apabila menggunakan kaedah dengan nama yang sama, tetapi menggunakannya dengan bijak boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda.
Atas ialah kandungan terperinci Ketahui lebih lanjut tentang definisi dan penggunaan kaedah Golang dengan nama yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!