Golang membenarkan mencipta dua atau lebih kaedah dengan nama yang sama dalam pakej yang sama, tetapi penerima kaedah ini mestilah daripada jenis yang berbeza. Ciri ini tidak tersedia dalam fungsi Go, yang bermaksud anda tidak dibenarkan mencipta kaedah dengan nama yang sama dalam pakej yang sama, jika anda cuba berbuat demikian, pengkompil akan memberi anda ralat.

Sintaks:
func(reciver_name_1 Type) method_name(parameter_list)(return_type){
// Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
// Code
}
Mari lihat contoh berikut untuk lebih memahami kaedah dengan nama yang sama di Golang:
Contoh 1:
// Chương trình Go minh họa cách
// tạo các phương thức cùng tên
package main
import "fmt"
// Tạo các cấu trúc
type student struct {
name string
branch string
}
type teacher struct {
language string
marks int
}
// Các phương thức cùng tên nhưng với
// kiểu receiver khác nhau
func (s student) show() {
fmt.Println("Name of the Student:", s.name)
fmt.Println("Branch: ", s.branch)
}
func (t teacher) show() {
fmt.Println("Language:", t.language)
fmt.Println("Student Marks: ", t.marks)
}
// Hàm chính
func main() {
// Khởi tạo các giá trị
// of the structures
val1 := student{"Rohit", "EEE"}
val2 := teacher{"Java", 50}
// Gọi các phương thức
val1.show()
val2.show()
}
Keputusan:
Name of the Student: Rohit
Branch: EEE
Language: Java
Student Marks: 50
Penjelasan: Dalam contoh di atas, kami mempunyai dua kaedah dengan nama yang sama, iaitu show() tetapi dengan jenis penerimaan yang berbeza. Di sini, kaedah show() pertama mengandungi s jenis pelajar dan kaedah show() kedua mengandungi t jenis guru . Dan dalam fungsi main() , kami memanggil kedua-dua kaedah dengan bantuan pembolehubah struktur masing-masing. Jika anda cuba mencipta kaedah show() ini dengan jenis penerima yang sama, pengkompil akan membuang ralat.
Contoh 2:
// Chương trình Go minh họa cách
// tạo các phương thức cùng tên
// với receiver không phải struct
package main
import "fmt"
type value_1 string
type value_2 int
// Tạo hàm cùng tên với
// các kiểu receiver không phải struct khác nhau
func (a value_1) display() value_1 {
return a + "forGeeks"
}
func (p value_2) display() value_2 {
return p + 298
}
// Hàm chính
func main() {
// Khởi tạo giá trị này
res1 := value_1("Geeks")
res2 := value_2(234)
// Hiện kết quả
fmt.Println("Result 1: ", res1.display())
fmt.Println("Result 2: ", res2.display())
}
Keputusan:
Result 1: GeeksforGeeks
Result 2: 532