为了账号安全,请及时绑定邮箱和手机立即绑定

参考内部结构

参考内部结构

Go
回首忆惘然 2023-05-04 16:49:30
我正在尝试以编程方式创建一些 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}}


查看完整回答
反对 回复 2023-05-04
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信