2 回答
TA贡献1873条经验 获得超9个赞
我经常使用这种设计模式来为特定的处理程序生成自定义输出。在那里定义您的 JSON 标签,并且只公开您需要的内容。然后自定义类型与您的处理程序紧密耦合:
func gameHandler(w http.ResponseWriter, r *http.Request) {
g, err := dbLookupGame(r) // handle err
// define one-time anonymous struct for custom formatting
jv := struct {
ID string `json:"id"`
Name string `json:"name"`
Version string `json:"ver"`
}{
ID: g.ID,
Name: g.Name,
Version: g.Version,
}
err = json.NewEncoder(w).Encode(&jv) // handle err
}
type game struct {
ID string
Name string
Version string
Secret string // don't expose this
// other internals ...
}
https://play.golang.org/p/hhAAlmb51Ue
TA贡献1876条经验 获得超5个赞
您可以编写一个method将您的Game数据转换为OtherGame. 像这样的东西。
func (game Game) OtherGame() OtherGame {
return OtherGame{
players: game.Players,
countries: game.Countries,
}
}
在发送到 之前调用此方法front-end。
game := Game{...}
otherGame := game.OtherGame()
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报