>백엔드 개발 >Golang >Go 구조체에 포함된 필드에 어떻게 액세스합니까?

Go 구조체에 포함된 필드에 어떻게 액세스합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 13:38:29930검색

How Do I Access Embedded Fields in Go Structs?

구조체 유형 내장 필드 액세스

Go에서 구조체 유형은 구조체 내에 하나 이상의 유형을 삽입할 수 있는 내장 필드를 포함할 수 있습니다. 이 강력한 기능을 사용하면 코드 재사용과 효율적인 메모리 관리가 가능합니다. 그러나 포인터에 대해 배우면서 이러한 필드에 액세스하는 방법을 이해하는 것은 어려울 수 있습니다.

다음 구조체 정의를 고려하세요.

<code class="go">type Engine struct {
    power int
}

type Tires struct {
    number int
}

type Cars struct {
    *Engine // Embedded field with pointer
    Tires   // Embedded field without pointer
}</code>

관찰한 것처럼 Cars 구조체 내에는 유형 포인터 *엔진이 정의되었습니다. 이를 통해 Cars 구조체를 통해 Engine 유형의 메서드와 필드에 액세스할 수 있습니다.

Engine 내장 필드의 power 필드에 액세스하려면 먼저 Engine 및 Cars 구조체를 모두 초기화해야 합니다. 기본 함수에서:

<code class="go">func main() {
    car := new(Cars) // Initialize Cars struct
    car.Engine = new(Engine) // Initialize Engine struct explicitly
    car.power = 342 // Set power field
    car.number = 4 // Set number field
}</code>

두 구조체를 모두 명시적으로 초기화하여 내장된 *Engine 포인터와 실제 Engine 개체 사이에 연결을 설정합니다. 이제 Cars 구조체를 통해 power 필드에 액세스할 수 있습니다.

<code class="go">fmt.Println(car.power) // Prints 342</code>

마찬가지로 포인터가 아닌 임베디드 필드 Tires의 경우 해당 숫자 필드에 직접 액세스할 수 있습니다.

<code class="go">fmt.Println(car.number) // Prints 4</code>

이 예에서는 구조체 내의 포함된 필드를 적절하게 초기화하고 액세스하는 방법을 보여 주며, 이를 통해 코드 재사용 및 효율적인 메모리 관리를 최대한 활용할 수 있습니다.

위 내용은 Go 구조체에 포함된 필드에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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