我正在嘗試以編程方式創(chuàng)建一些 API 文檔,我有這個(gè):type APIDoc struct { Route string ResolutionValue struct { v string }}然后我嘗試這樣做: json.NewEncoder(w).Encode(APIDoc.ResolutionValue{"foo"})但它說(shuō)APIDoc.ResolutionValue 未定義(類型 APIDoc 沒(méi)有方法 ResolutionValue)所以我求助于這樣做:type ResolutionValue struct { v string}type APIDoc struct { Route string ResolutionValue ResolutionValue}然后做: json.NewEncoder(w).Encode(ResolutionValue{"foo"})有點(diǎn)蹩腳,有沒(méi)有辦法以某種方式確保完整性?
1 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
從 Go 1.11 開始,不支持嵌套類型。
在我看來(lái),您的修訂版看起來(lái)好多了。
編輯:可能與問(wèn)題無(wú)關(guān),但您可以使用類型嵌入來(lái)簡(jiǎn)化您的類型。但是,請(qǐng)注意表示形式不同:
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)
}
哪個(gè)打?。?/p>
{"Val":"","Whatever":0}
{"Val":"","Inner":{"Whatever":0}}
- 1 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)
0/150
提交
取消