>  기사  >  백엔드 개발  >  Go 구조체의 이름 없는 필드는 어떻게 필드를 승격하고 복합 유형을 포함합니까?

Go 구조체의 이름 없는 필드는 어떻게 필드를 승격하고 복합 유형을 포함합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-15 11:23:02994검색

How do Nameless Fields in Go Structs Promote Fields and Embed Compound Types?

Go 구조체의 이름 없는 필드 이해

Go 구조체의 이름 없는(또는 익명) 필드는 두 가지 목적으로 사용됩니다.

1. 필드 승격:

구조체의 첫 번째 익명 필드가 "승격" 필드가 됩니다. 즉, 필드 이름을 지정하지 않고 상위 구조체에서 해당 속성에 직접 액세스할 수 있습니다.

2. 복합 유형 포함:

익명 필드를 사용하면 다른 구조 내에 전체 구조를 포함할 수 있으므로 포함된 유형의 기능을 활용할 수 있습니다.

이러한 개념을 설명하려면 다음을 고려하세요. 코드 조각:

package main

import (
    "fmt"
)

type Base struct {
    Name string
}

type Embedded struct {
    Address string
}

type Person struct {
    Base
    Embedded
}

func main() {
    person := Person{
        Base: Base{Name: "Alice"},
        Embedded: Embedded{Address: "123 Main Street"},
    }

    fmt.Printf("Name: %s, Address: %s\n", person.Name, person.Address)
}

여기서 예:

  • Base 구조체에는 Name 필드가 있습니다.
  • Embedded 구조체에는 Address 필드가 있습니다.
  • Person 구조체에는 Base 및 Name 필드가 모두 익명으로 포함되어 있습니다. 내장된 구조체.
  • person 변수는 Person의 인스턴스입니다. struct.

Person의 Name에 액세스할 때 우리는 약식 구문을 사용하여 Base의 승격된 필드인 Name에 액세스합니다. 마찬가지로 Address에 액세스하기 위해 person.Address를 사용하여 내장된 Embedded 구조체에 액세스합니다.

이를 통해 기본 및 Embedded 구조체 모두에서 속성을 상속하는 새로운 유형(Person)을 효과적으로 생성할 수 있어 편리하고 복잡한 데이터 구조를 구성하는 깔끔한 방법.

위 내용은 Go 구조체의 이름 없는 필드는 어떻게 필드를 승격하고 복합 유형을 포함합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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