Nameless fields in Go structs?

后端 未结 2 627
栀梦
栀梦 2021-02-07 03:41
package main

import \"fmt\"

type myType struct {
    string
}

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

    fmt.Println(obj)
}

What is the p

2条回答
  •  一向
    一向 (楼主)
    2021-02-07 04:20

    See "Embedding in Go ": you embed an anonymous field in a struct: this is generally used with an embedded struct, not a basic type like string. That type has no "promoted field" to expose.

    A field or method f of an anonymous field in a struct x is called promoted if x.f is a legal selector that denotes that field or method f.

    Promoted fields act like ordinary fields of a struct except that they cannot be used as field names in composite literals of the struct.

    (here string has no field in itself)

    See an example of type embedding in "Embeffffding when to use pointer".

    Is it possible to access these fields like you can do with named fields?

    A fmt.Println(obj.string) would return Hello World instead of {Hello World}.

提交回复
热议问题