golang 메소드를 오버로드하는 방법은 무엇입니까?

王林
풀어 주다: 2024-04-27 18:06:01
원래의
890명이 탐색했습니다.

Go는 메소드 세트를 통해 동일한 유형의 메소드 오버로드를 허용합니다. 즉, 이름은 같지만 매개변수가 다른 여러 메소드를 정의합니다. 메소드 세트는 인터페이스에 포함되어야 하며 메소드 이름은 동일하고 매개변수 유형은 다르며 반환 값 유형은 동일하거나 다를 수 있습니다. 예를 들어 Point 유형은 다른 Point 매개 변수를 허용하는 거리 메서드와 매개 변수를 허용하지 않는 거리 메서드를 오버로드할 수 있습니다.

如何重载 golang 方法?

Go 메소드를 오버로드하는 방법은 무엇입니까?

개요

Go는 전통적인 의미의 메소드 오버로딩, 즉 동일한 유형에서 이름은 같지만 매개변수가 다른 메소드를 정의하는 메소드 오버로드를 지원하지 않습니다. 그러나 Go는 이름은 같지만 매개변수가 다른 여러 메서드를 정의할 수 있는 메서드 세트라는 대안을 제공합니다.

Syntax

Go에서 메소드를 오버로드하려면 다음 구문을 사용할 수 있습니다:

type TypeName interface {
    MethodName(param1Type param1Name, param2Type param2Name, ...)returnType
}
로그인 후 복사

Practical example

Distance in <code>Point 유형 방법. Point 类型中重载 Distance 方法。

type Point struct {
    x, y float64
}

func (p Point) Distance(q Point) float64 {
    return math.Sqrt(math.Pow(p.x-q.x, 2) + math.Pow(p.y-q.y, 2))
}

func (p Point) DistanceToOrigin() float64 {
    return math.Sqrt(math.Pow(p.x, 2) + math.Pow(p.y, 2))
}
로그인 후 복사

在上面示例中,Point 类型有两个 Distance 方法:一个采用另一个 Pointrrreee

위의 예에서 Point 유형에는 두 개의 Distance 메서드가 있습니다. 하나는 다른 Point 매개변수를 사용하고 다른 하나는 매개변수를 사용하지 않습니다. . 컴파일러는 메소드의 매개변수 유형을 기반으로 구별하므로 두 메소드에 동일한 이름을 사용할 수 있습니다.

Notes
  • 메서드 세트가 인터페이스에 포함되어야 합니다.
  • 메서드 이름은 동일해야 합니다.
  • 메서드 매개변수 유형은 달라야 합니다.
  • 메서드 반환 값 유형은 동일할 수도 있고 다를 수도 있습니다.
🎜

위 내용은 golang 메소드를 오버로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿