>백엔드 개발 >Golang >golang은 동일한 이름을 가진 메소드를 지원합니까?

golang은 동일한 이름을 가진 메소드를 지원합니까?

青灯夜游
青灯夜游원래의
2022-12-08 19:29:265554검색

golang은 동일한 이름을 가진 메소드를 지원합니다. Go 언어에서는 동일한 패키지에 동일한 이름을 가진 두 개 이상의 메소드를 생성할 수 있지만 이러한 메소드의 수신자는 서로 다른 유형을 가져야 합니다. Go 함수에서는 이 기능을 사용할 수 없습니다. 즉, 사용자는 다음을 수행할 수 없습니다. 동일한 패키지에서 동일한 메소드를 사용하십시오. 패키지에서 동일한 이름을 가진 메소드를 작성하려고 하면 컴파일러에서 오류가 발생합니다.

golang은 동일한 이름을 가진 메소드를 지원합니까?

이 튜토리얼의 운영 환경: 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() 
}

출력:

golang은 동일한 이름을 가진 메소드를 지원합니까?

위 예에서는 두 개의 동일한 이름 메소드, 즉 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은 동일한 이름을 가진 메소드를 지원합니까?

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 golang은 동일한 이름을 가진 메소드를 지원합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.