>백엔드 개발 >Golang >Go에 내장된 기본 유형이 실제 이점을 제공합니까?

Go에 내장된 기본 유형이 실제 이점을 제공합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-03 01:36:31199검색

Do Embedded Primitive Types in Go Offer Any Real Advantages?

임베디드 유형: 원시 임베딩의 유용성 탐색

Go 구조체를 사용할 때 기본 유형 임베딩 개념이 나타날 수 있습니다. 아래 코드 조각을 고려하세요.

type User struct {
    int32
    Name string
}

이 코드는 int32 기본 유형을 포함하는 User 구조체를 정의합니다. 그러나 이러한 임베딩의 유용성에 관한 질문이 발생합니다.

임베디드 프리미티브에 메서드가 있습니까?

아니요, int32와 같은 임베디드 프리미티브에는 이와 관련된 메서드가 없습니다. . 이를 확인하려면 리플렉션을 사용하여 사용 가능한 메서드 수를 검사할 수 있습니다.

fmt.Println(reflect.TypeOf(int32(0)).NumMethod())

출력은 0이 되며 이는 int32에 메서드가 없음을 나타냅니다.

Embedded Primitive 액세스 값

사용자 인스턴스 내에 포함된 int32 값에 액세스하려면 정규화되지 않은 값을 직접 사용할 수 있습니다. 필드 이름으로 이름 입력:

u := User{3, "Bob"}
fmt.Printf("%#v\n", u)
u.int32 = 4
fmt.Println(u.int32)

출력:

main.User{int32:3, Name:"Bob"}
4

삽입의 장점

기본 유형을 삽입하면 직접 제공되지 않을 수 있습니다. 메소드에 대한 액세스가 가능하므로 인터페이스와 메소드를 다룰 때 특정 이점을 제공합니다. 재정의.

  • 포함된 유형에서 승격된 메서드는 인터페이스 구현을 간소화할 수 있습니다.
  • 포함 유형에서 메서드를 재정의할 수 있으므로 해당 유형의 값과 상호 작용할 때 사용자 정의된 동작이 가능합니다.
  • 포함된 필드가 승격되어 해당 필드에 대한 참조가 단축됩니다. fields.

미리 선언된 유형 삽입의 단점

int32와 같이 미리 선언된 유형을 삽입할 때 고려해야 할 단점이 있습니다.

  • 소문자로 시작하는 내장된 미리 선언된 유형은 자동으로 내보내지 않아 접근성이 제한됩니다.

위 내용은 Go에 내장된 기본 유형이 실제 이점을 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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