首頁 >後端開發 >Golang >Go 結構中的無名字段如何提升字段和嵌入複合類型?

Go 結構中的無名字段如何提升字段和嵌入複合類型?

Barbara Streisand
Barbara Streisand原創
2024-11-15 11:23:021095瀏覽

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)
}

在此範例中:

  • 基礎struct 有一個命名欄位 Name。
  • Embedded 結構有一個命名欄位 Address。
  • Person 結構匿名嵌入 Base 和 Embedded 結構。
  • person 變數是Person 結構體的實例。

存取 person 上的 Name 時,我們使用簡寫語法來存取Base的提升字段,即Name。類似地,要存取 Address,我們使用 person.Address 來存取嵌入式嵌入式結構。

這有效地允許我們建立一個新類型(Person),它繼承了 Base 和 Embedded 結構的屬性,提供了方便和組成複雜資料結構的乾淨方法。

以上是Go 結構中的無名字段如何提升字段和嵌入複合類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn