Golang permite crearea a două sau mai multe metode cu același nume în același pachet, dar receptorii acestor metode trebuie să fie de tipuri diferite. Această caracteristică nu este disponibilă în funcțiile Go, ceea ce înseamnă că nu aveți voie să creați metode cu același nume în același pachet, dacă încercați să faceți acest lucru, compilatorul vă va da o eroare.

Sintaxă:
func(reciver_name_1 Type) method_name(parameter_list)(return_type){
// Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
// Code
}
Să ne uităm la următorul exemplu pentru a înțelege mai bine metodele cu același nume în Golang:
Exemplul 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()
}
Rezultat:
Name of the Student: Rohit
Branch: EEE
Language: Java
Student Marks: 50
Explicație: În exemplul de mai sus, avem două metode cu același nume, adică show() dar cu tipuri diferite de recepție. Aici, prima metodă show() conține s de tip student și a doua metodă show() conține t de tip teacher . Și în funcția main() apelăm ambele metode cu ajutorul variabilelor de structură respective. Dacă încercați să creați aceste metode show() cu același tip de receptor, compilatorul va arunca o eroare.
Exemplul 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())
}
Rezultat:
Result 1: GeeksforGeeks
Result 2: 532