Golang은 Google에서 개발한 강력한 형식의 정적으로 컴파일된 언어입니다. 간결한 구문과 효율성으로 인해 많은 인터넷 회사가 선택하는 언어입니다. 같은 이름을 가진 메소드는 이 언어에서 흥미로운 문법적 특징입니다. 이번 글에서는 동명 Golang 메소드의 정의와 사용 시나리오, 주의사항을 소개하겠습니다.
Golang에서 동일한 이름의 메소드는 동일한 메소드 이름을 가진 여러 메소드를 나타냅니다. 이러한 메서드는 동일한 유형으로 나타날 수도 있고 다른 유형으로 나타날 수도 있습니다.
동일한 이름을 가진 메서드는 다음 조건을 충족해야 합니다.
(1) 서로 다른 수신자 유형에 정의되어야 합니다.
(2) 서로 다른 매개변수 목록이 있어야 합니다.
(3) 반환 값은 다를 수 있습니다. , 그러나 방법 이름은 동일해야 합니다.
예를 들어 다음은 동일한 이름을 가진 두 개의 메소드를 정의하는 구조입니다.
type Person struct{ Name string Age int } func (p Person) Print(){ fmt.Printf("Name: %s, Age: %d", p.Name, p.Age) } func (p *Person) Print(){ fmt.Printf("Name: %s, Age: %d", p.Name, p.Age) }
위의 예에서 Person 구조는 Print라는 동일한 이름을 가진 두 개의 메소드를 정의합니다. 첫 번째 Print 메소드는 Person 유형의 값을 수신자로 수신하고, 두 번째 Print 메소드는 Person 유형에 대한 포인터를 수신자로 수신합니다.
동일한 메소드의 사용 시나리오는 점 표기법을 사용하여 객체에 대한 메소드를 호출할 수도 있고, 유형 이름을 통해 메소드를 호출할 수도 있습니다.
다음은 같은 이름의 메소드를 사용하는 예입니다.
p := Person{ Name: "Tom", Age: 18, } p.Print() // Name: Tom, Age: 18 pp := &p pp.Print() // Name: Tom, Age: 18
위 예에서는 동일한 객체를 사용하여 두 가지 메소드를 호출했습니다. 첫 번째 Print 메소드는 Person 유형 값을 수신자로 수신하므로 p.Print()를 사용하여 이를 호출할 수 있습니다. 두 번째 Print 메소드는 포인터 유형 값을 수신자로 수신하므로 이를 호출하려면 p에 대한 포인터를 사용해야 합니다.
Golang에서는 동일한 이름의 메소드를 지원하지만, 사용 시 다음 사항에 주의해야 합니다.
(1) 동일한 이름의 메소드는 다른 수신자 유형에 정의되어야 합니다. 2 ) 동일한 이름을 가진 메소드의 매개변수 목록은 동일할 수 없습니다.
(3) 동일한 이름을 가진 메소드의 반환 값은 다를 수 있습니다.
(4) 유형이 동일한 이름을 가진 두 메소드를 정의하는 경우, 그런 다음 유형에 대한 메소드 호출이 이루어지면 컴파일러는 장치 유형에 따라 적절한 메소드 선택을 수신합니다.
type Person struct{ Name string Age int } func (p *Person) Print(){ fmt.Printf("Name: %s, Age: %d", p.Name, p.Age) } func (p *Person) Print(){ fmt.Printf("Name: %s, Age: %d", p.Name, p.Age) }컴파일러는 다음 오류를 보고합니다.
redeclared method Person.Print왜냐하면 우리는 동일한 이름과 동일한 매개변수 목록을 가진 두 개의 메소드를 정의하기 때문입니다. 요약이 글에서는 Golang에서 동명의 메소드를 소개했습니다. 동일한 이름을 가진 메소드는 서로 다른 수신자 유형에 대해 동일한 메소드 이름을 정의할 수 있게 해주는 흥미로운 구문 기능입니다. 동일한 이름의 메서드를 사용할 때 주의해야 할 몇 가지 제한 사항이 있지만 현명하게 사용하면 코드의 가독성과 유지 관리 가능성이 향상될 수 있습니다.
위 내용은 동일한 이름을 가진 Golang 메서드의 정의 및 사용에 대해 자세히 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!