Golang อนุญาตให้สร้างวิธีการ 2 วิธีหรือมากกว่าที่มีชื่อเดียวกันในแพ็คเกจเดียวกัน แต่ตัวรับของวิธีการเหล่านี้จะต้องเป็นประเภทที่แตกต่างกันคุณสมบัตินี้ใช้ไม่ได้ในฟังก์ชัน Go ซึ่งหมายความว่าคุณไม่ได้รับอนุญาตให้สร้างวิธีการที่มีชื่อเดียวกันในแพ็คเกจเดียวกัน หากคุณพยายามทำเช่นนั้น คอมไพเลอร์จะแสดงข้อผิดพลาดให้คุณเห็น

รูปแบบประโยค :
func(reciver_name_1 Type) method_name(parameter_list)(return_type){
// Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
// Code
}
มาดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจวิธีการที่มีชื่อเดียวกันใน Golang ได้ดียิ่งขึ้น:
ตัวอย่างที่ 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()
}
ผลลัพธ์:
Name of the Student: Rohit
Branch: EEE
Language: Java
Student Marks: 50
คำอธิบาย: ในตัวอย่างข้างต้น เรามีสองวิธีที่มีชื่อเดียวกัน นั่นคือshow()แต่มีประเภทการรับที่แตกต่างกัน ที่นี่ วิธี show()แรกมีsประเภทstudent และ วิธีshow()ที่สอง มี tประเภทteacherและใน ฟังก์ชัน main()เราจะเรียกใช้ทั้งสองวิธีด้วยความช่วยเหลือจากตัวแปรโครงสร้างที่เกี่ยวข้อง หากคุณพยายามสร้าง วิธีการshow() เหล่านี้ โดยใช้ประเภทตัวรับเดียวกัน คอมไพเลอร์จะแสดงข้อผิดพลาด
ตัวอย่างที่ 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())
}
ผลลัพธ์:
Result 1: GeeksforGeeks
Result 2: 532