golang은 동일한 이름을 가진 메소드를 지원합니다. Go 언어에서는 동일한 패키지에 동일한 이름을 가진 두 개 이상의 메소드를 생성할 수 있지만 이러한 메소드의 수신자는 서로 다른 유형을 가져야 합니다. Go 함수에서는 이 기능을 사용할 수 없습니다. 즉, 사용자는 다음을 수행할 수 없습니다. 동일한 패키지에서 동일한 메소드를 사용하십시오. 패키지에서 동일한 이름을 가진 메소드를 작성하려고 하면 컴파일러에서 오류가 발생합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
Go에서 동일한 이름을 가진 메소드
Go 언어에서는 동일한 패키지에 동일한 이름을 가진 두 개 이상의 메소드를 생성할 수 있지만 이러한 메소드의 수신자는 서로 다른 유형을 가져야 합니다. 이 기능은 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 }
예를 통해 이 개념을 논의해 보겠습니다.
예 1:
package main import "fmt" //创建结构体 type student struct { name string branch string } type teacher struct { language string marks int } //名称相同的方法,但有不同类型的接收器 func (s student) show() { fmt.Println("学生姓名:", s.name) fmt.Println("Branch: ", s.branch) } func (t teacher) show() { fmt.Println("Language:", t.language) fmt.Println("Student Marks: ", t.marks) } func main() { // 初始化结构体的值 val1 := student{"Rohit", "EEE"} val2 := teacher{"Java", 50} //调用方法 val1.show() val2.show() }
출력:
위 예에서는 두 개의 동일한 이름 메소드, 즉 show()이지만 수신자의 유형이 다릅니다. 여기서 첫 번째 show() 메소드에는 s Student 유형의 수신자가 포함되고, 두 번째 show() 메소드에는 t Teacher 유형의 수신자가 포함됩니다. main() 함수에서는 해당 구조 변수의 도움을 받아 이 두 메서드를 호출합니다. 동일한 유형의 수신기를 사용하여 이 show() 메서드를 생성하려고 하면 컴파일러에서 오류가 발생합니다.
예 2:
//创建相同名称的方法 //非结构类型的接收器 package main import "fmt" type value_1 string type value_2 int //创建具有相同名称的函数 //不同类型的非结构接收器 func (a value_1) display() value_1 { return a + ".com" } func (p value_2) display() value_2 { return p + 298 } func main() { //初始化值 res1 := value_1("nhooo") res2 := value_2(234) // 打印显示结果 fmt.Println("Result 1: ", res1.display()) fmt.Println("Result 2: ", res2.display()) }
출력:
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 golang은 동일한 이름을 가진 메소드를 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!