我正在尝试以编程方式创建一些 API 文档,我有这个:type APIDoc struct { Route string ResolutionValue struct { v string }}然后我尝试这样做: json.NewEncoder(w).Encode(APIDoc.ResolutionValue{"foo"})但它说APIDoc.ResolutionValue 未定义(类型 APIDoc 没有方法 ResolutionValue)所以我求助于这样做:type ResolutionValue struct { v string}type APIDoc struct { Route string ResolutionValue ResolutionValue}然后做: json.NewEncoder(w).Encode(ResolutionValue{"foo"})有点蹩脚,有没有办法以某种方式确保完整性?
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
从 Go 1.11 开始,不支持嵌套类型。
在我看来,您的修订版看起来好多了。
编辑:可能与问题无关,但您可以使用类型嵌入来简化您的类型。但是,请注意表示形式不同:
type Inner struct {
Whatever int
}
type ResolutionValue struct {
Val string
Inner
}
type ResolutionValue2 struct {
Val string
Inner Inner
}
func main() {
a, _ := json.Marshal(ResolutionValue{})
b, _ := json.Marshal(ResolutionValue2{})
fmt.Printf("%s\n%s", a, b)
}
哪个打印:
{"Val":"","Whatever":0}
{"Val":"","Inner":{"Whatever":0}}
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消