问题描述

我有以下类型:

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}
 v:= NamedValue {Name: fine,Value:33}  e:= ErrorValue {名称: alpha,值:123,错误:err} 
v := NamedValue{Name: "fine", Value: 33}e := ErrorValue{Name: "alpha", Value: 123, Error: err}

似乎可以嵌入语法,但不能使用它吗?

Seems that embedding syntax was ok, but using it doesn't work?

推荐答案

嵌入式类型是(未命名)字段,由非限定类型名称引用。

Embedded types are (unnamed) fields, referred to by the unqualified type name.

 T  * T  T 
T*TT

因此,请尝试:

e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}

如果您省略复合文字中的字段名称,也可以使用:

Also works if you omit the field names in the composite literal:

e := ErrorValue{NamedValue{"fine", 33}, err}

在转到游乐场上尝试示例。

这篇关于Golang嵌入式结构类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!