>백엔드 개발 >Golang >명명된 유형과 포함: 기존 Go 유형에 메소드를 어떻게 추가합니까?

명명된 유형과 포함: 기존 Go 유형에 메소드를 어떻게 추가합니까?

DDD
DDD원래의
2024-12-11 08:55:12928검색

Named Types vs. Embedding: How Do I Add Methods to an Existing Go Type?

기존 유형에 메소드 추가: 명명된 유형과 포함

명명된 유형을 다룰 때 새 유형을 생성하는 것과 유형을 포함하는 것의 차이점을 이해하는 것이 중요합니다. 기존 유형. 원래 메소드를 유지하면서 기존 유형에 메소드를 추가하는 방법을 살펴보겠습니다.

사례 1: 명명된 유형

type 키워드를 사용하여 새 유형을 정의하는 경우 , 기본 유형과 구별됩니다. 예를 들어 제공된 코드 조각에서

type StartTime time.Time

StartTime은 새로운 유형이며 Date()와 같은 time.Time 메서드가 없습니다. 이는 명명된 유형이 기본 유형에서 메소드를 상속하지 않기 때문입니다.

사례 2: 삽입

원래 메소드를 잃지 않고 기존 유형에 메소드를 추가하려면 다음을 사용하세요. 임베딩. 여기에는 기존 유형을 포함하는 새 구조체를 만드는 작업이 포함됩니다. 예를 들어, 포함을 사용하여 위 코드를 다시 작성할 수 있습니다.

type StartTime struct {
    time.Time
}

이 경우 StartTime은 time.Time을 포함합니다. 즉, 모든 메서드와 필드가 포함됩니다.

어떻게 Embedding Works

구조체가 익명으로 다른 구조체를 포함하는 경우(필드를 지정하지 않음) 이름), 포함된 구조체의 필드와 메서드가 포함 구조체로 승격됩니다. 즉, 임베딩 구조체의 인스턴스에서 직접 사용할 수 있습니다.

사용 예

임베딩을 사용하면 StartTime 및 time.Time:

func main() {
    s := StartTime{time.Now()}
    fmt.Println(s.Date()) // Will output the current date
}

결론

동작을 수정하거나 기존 유형에 메서드를 추가해야 하는 경우 포함 사용을 고려하세요. 유형의 기능을 확장하면서 원래 메소드를 보존할 수 있습니다.

위 내용은 명명된 유형과 포함: 기존 Go 유형에 메소드를 어떻게 추가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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