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中文网其他相关文章!