一尘不染

Go结构中的无名字段?

go

package main

import "fmt"

type myType struct {
    string
}

func main() {
    obj := myType{"Hello World"}

    fmt.Println(obj)
}

结构中无名字段的目的是什么?

是否可以像使用命名字段一样访问这些字段?


阅读 242

收藏
2020-07-02

共1个答案

一尘不染

请参阅“ 在Go中嵌入
”:您在结构中嵌入了一个匿名字段:通常与嵌入式结构一起使用,而不是像这样的基本类型string。该类型没有要显示的“提升字段”。

字段或方法f在一个结构匿名字段的x被称为 促进 如果x.f是一个合法的选择器,它表示字段或方法f

提升的字段的作用类似于结构的普通字段,只是它们不能用作结构的复合文字中的字段名称。

(这里string本身没有字段)

请参阅“ 何时使用指针嵌入”中的类型嵌入示例。

是否可以像使用命名字段一样访问这些字段?

A fmt.Println(obj.string)将返回Hello World而不是{Hello World}

2020-07-02