이름이 지정된 유형에 대한 호출 방법
Go에서 이름이 지정된 유형은 기존 데이터 유형에서 생성된 새로운 데이터 유형입니다. 이는 JSON 데이터를 비정렬화하는 경우와 같이 기본 유형에 사용자 정의 메소드를 추가하는 데 유용할 수 있습니다. 그러나 명명된 유형이 아래에 표시된 방식으로 생성되면 기본 유형의 메서드를 호출하는 기능이 손실됩니다.
type StartTime time.Time
예를 들어 myStartTime에서 Date() 메서드를 호출하려고 하면 다음과 같은 결과가 발생합니다. 오류: myStartTime.Date가 정의되지 않았습니다(my_package.StartTime 유형에는 Date 필드나 메서드가 없습니다).
해결책: 수용 임베딩
이 문제를 해결하고 기본 유형의 원래 방법을 보존하려면 임베딩을 활용할 수 있습니다. 기본 유형을 포함함으로써 명명된 유형은 모든 메소드와 필드를 상속합니다. 이 프로세스는 아래에 설명되어 있습니다.
type StartTime struct { time.Time }
이 시나리오에서는 time.Time의 모든 메서드와 필드가 "승격"되고 명명된 유형을 통해 액세스할 수 있게 됩니다. 결과적으로 StartTime 유형의 변수인 s에서 Date()를 호출해도 더 이상 오류가 발생하지 않습니다.
예제 쇼케이스:
type StartTime struct { time.Time } func main() { s := StartTime{time.Now()} fmt.Println(s.Date()) }
이 코드는 다음을 생성합니다. 출력:
2009 November 10
임베딩을 사용하면 기존 유형의 기능을 손쉽게 확장할 수 있습니다. 원래의 기능을 유지하면서.
위 내용은 Go에서 명명된 유형에 대한 메서드를 호출할 수 없는 이유는 무엇이며, 임베딩을 통해 이 문제를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!