>  기사  >  백엔드 개발  >  Go의 유형 별칭과 유형 정의는 메소드 상속에서 언제 다릅니까?

Go의 유형 별칭과 유형 정의는 메소드 상속에서 언제 다릅니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-19 18:51:03447검색

When Do Type Aliases and Type Definitions in Go Differ in Method Inheritance?

유형 별칭과 유형 정의

Go에서 유형 선언은 별칭 선언과 유형 정의라는 두 가지 범주로 분류할 수 있습니다. durWithoutMethods 및 sameAsDuration과 같은 유형 별칭의 흥미로운 동작을 이해하려면 이러한 차이점을 이해하는 것이 중요합니다.

별칭 선언

별칭 선언은 단지 기존 유형에 대한 새 식별자를 생성할 뿐입니다. 이 새로운 식별자는 원래 이름과 상호 교환이 가능합니다. 예를 들어, dur = time.Duration을 입력하면 time.Duration에 대한 별칭이 생성됩니다. dur 및 time.Duration을 사용하여 변수를 선언하면 동일한 동작이 발생합니다.

유형 정의

반면에 유형 정의는 새로운 유형을 생성합니다. 기본 유형에서 모든 메소드를 제거합니다. 즉, type x struct { y time.Duration } 유형을 정의하면 x는 time.Duration의 메서드를 상속하지 않습니다. 이는 time.Duration이 메소드가 첨부되지 않은 원시 유형이기 때문입니다.

이를 예제에 적용

  • durWithMethods dur: 이 별칭 선언은 기본 유형이 dur인 새로운 유형 durWithMethods를 생성합니다. dur에는 time.Duration이 포함되어 있으므로 dur 및 durWithMethods는 Duration.String()을 상속합니다.
  • durWithoutMethods time.Duration: 이 유형 정의는 time.Duration과 별개인 새로운 유형 durWithoutMethods를 생성합니다. 결과적으로 durWithoutMethods는 Duration.String()을 상속하지 않습니다.
  • type sameAsDuration = time.Duration: 이 유형 별칭 선언은 sameAsDuration과 time.Duration이 동일한 유형임을 나타냅니다. 따라서 sameAsDuration에는 String() 메서드도 있습니다.

위 내용은 Go의 유형 별칭과 유형 정의는 메소드 상속에서 언제 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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