按另一个struct字段的类型声明struct字段的类型

时间:2017-05-09 10:38:46

标签: go struct types field

这是* s3.GetObjectOutput struct:

type GetObjectOutput struct {
    ...
    Metadata map[string]*string
    ...
}

我想用结构字段声明我的结构在GetObjectOutput结构中具有Metadata字段的类型,如下所示

type MyObject struct {
    Metadata *s3.GetObjectOutput.Metadata
    ...
}

但这不正确。如何声明具有字段的结构具有另一个结构字段的类型而不是显式写下:

type MyObject struct {
    Metadata map[string]*string
    ...
}

2 个答案:

答案 0 :(得分:1)

正如@zerkms所说,你做不到。 最好的想法是在MyObject中创建自己的相同类型的字段。

您还可以将s3.GetObjectOutput嵌入MyObject

type MyObject struct {
    *s3.GetObjectOutput
    ...
}

鉴于myobjMyObject的实例,请使用myobj.Metadata

答案 1 :(得分:0)

@William Poussier 通过这种方式,我必须使用全局变量才能使用它的类型。正如@zerkms建议我从* s3.GetObjectOutput

复制元数据类型
type Metadata map[string]*string 

并使用:

type MyObject struct { 
    Metadata
}