ホームページ > バックエンド開発 > Golang > Go 構造体の名前のないフィールドはどのようにフィールドをプロモートし、複合型を埋め込むのでしょうか?

Go 構造体の名前のないフィールドはどのようにフィールドをプロモートし、複合型を埋め込むのでしょうか?

Barbara Streisand
リリース: 2024-11-15 11:23:02
オリジナル
1079 人が閲覧しました

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

Go 構造体の名前のないフィールドを理解する

Go 構造体の名前のない (または匿名) フィールドには 2 つの目的があります:

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 構造体と名前付きフィールドの両方を匿名で埋め込みます。埋め込み構造体。
  • person 変数は person のインスタンスです。 struct.

person の Name にアクセスする場合、短縮構文を使用して Base のプロモートされたフィールド (Name) にアクセスします。同様に、Address にアクセスするには、person.Address を使用して、埋め込まれた Embedded 構造体にアクセスします。

これにより、Base 構造体と Embedded 構造体の両方からプロパティを継承する新しい型 (person) を効果的に作成できるようになり、便利な複雑なデータ構造を構成するきれいな方法。

以上がGo 構造体の名前のないフィールドはどのようにフィールドをプロモートし、複合型を埋め込むのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート