英文:
Declare type of a struct field by type of another struct field
问题
这是*s3.GetObjectOutput结构体的定义:
type GetObjectOutput struct {
...
Metadata map[string]*string
...
}
我想声明一个结构体,其中一个字段的类型是GetObjectOutput结构体中Metadata字段的类型,像这样:
type MyObject struct {
Metadata *s3.GetObjectOutput.Metadata
...
}
但这是不正确的。我该如何声明一个结构体,其中一个字段的类型是另一个结构体的字段类型,而不是直接写出类型:
type MyObject struct {
Metadata map[string]*string
...
}
英文:
Here is *s3.GetObjectOutput struct:
type GetObjectOutput struct {
...
Metadata map[string]*string
...
}
I want to declare my struct with a struct field has type of Metadata field in GetObjectOutput struct like this
type MyObject struct {
Metadata *s3.GetObjectOutput.Metadata
...
}
But it was not correct. How do I declare a struct with a field has type of another struct's field instead of explicitly write down:
type MyObject struct {
Metadata map[string]*string
...
}
答案1
得分: 1
根据 @zerkms 的说法,你不能这样做。
最好的方法可能是在 MyObject
中创建一个相同类型的自定义字段。
你也可以将 s3.GetObjectOutput
嵌入到 MyObject
中。
type MyObject struct {
*s3.GetObjectOutput
...
}
假设 myobj
是 MyObject
的一个实例,可以使用 myobj.Metadata
。
英文:
As @zerkms said, you can't.
Best idea is to probably create your own field of the same type in MyObject
.
You can also embed the s3.GetObjectOutput
in MyObject
.
type MyObject struct {
*s3.GetObjectOutput
...
}
Given myobj
is an instance of MyObject
, use myobj.Metadata
.
答案2
得分: 0
@William Poussier
这样的话,我必须使用一个全局变量来仅仅使用它的类型。正如@zerkms建议的那样,我从*s3.GetObjectOutput中复制了Metadata类型。
type Metadata map[string]*string
然后使用:
type MyObject struct {
Metadata
}
英文:
@William Poussier
In that way I have to use a global variable just for use its type. As @zerkms suggested I copied Metadata type from *s3.GetObjectOutput
type Metadata map[string]*string
and use:
type MyObject struct {
Metadata
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论