首页 >后端开发 >Golang >Go 结构中的匿名字段如何工作?

Go 结构中的匿名字段如何工作?

Linda Hamilton
Linda Hamilton原创
2024-11-14 22:22:02681浏览

How do Anonymous Fields Work in Go Structs?

Go 结构体中的匿名字段

在 Go 中,结构体可以包含匿名字段,即没有显式名称的字段。这些字段允许您将另一个结构或类型嵌入到当前结构中,从而提供对嵌入类型的字段的访问,而无需显式列出它们。

匿名字段的用途

匿名字段有多种用途:

  • 类型嵌入:它们允许您将一种类型的字段嵌入到另一种类型中,减少代码重复并使处理复杂数据变得更容易
  • 促销: 第一个匿名字段称为“促销字段”。它的字段可以直接在父结构上访问,因为它的行为就像这些字段是在父结构中声明的一样。

访问匿名字段

您可以像访问命名字段一样访问匿名字段。可以使用父结构体的字段名称直接访问提升的字段。可以使用嵌入类型的字段名称来访问其他匿名字段。

示例

考虑以下代码:

package main

import "fmt"

type Widget struct {
    name string
}

type WrappedWidget struct {
    Widget  // Promoted field
    Time time.Time
    Price int64
}

func main() {
    widget := Widget{"my widget"}
    wrappedWidget := WrappedWidget{widget, time.Now(), 1234}

    fmt.Printf("Widget named %s, created at %s, has price %d\n",
        wrappedWidget.name,  // Accessing the promoted field
        wrappedWidget.Time,  // Accessing an anonymous field
        wrappedWidget.Price) // Accessing a normal field
}

输出:

Widget named my widget, created at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, has price 1234

在此示例中,WrappedWidget 嵌入 Widget 结构并提升其名称字段。因此,您可以直接在 WrappedWidget 实例上访问名称字段。

以上是Go 结构中的匿名字段如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn