抛砖引玉,先说一个我自己遇到的坑吧。
定义两个结构体:
```go
type UserStep struct {
Timestamp string `json:"time_stamp"`
Steps int64 `json:"steps"`
}
type Server struct {
UserStep
Timestamp string `json:"time_stamp"`
}
func main() {
us := UserStep{
Timestamp: "12",
Steps: 23,
}
sv := Server{
Timestamp: "10",
UserStep: us,
}
by_sv, _ := json.Marshal(sv)
var sv2 Server
json.Unmarshal(by_sv, &sv2)
fmt.Printf("%+v", sv2)
}```
Server里的匿名字段UserStep里含有跟父结构体相同的json字段名,在反序列化的时候将被遮盖。
大家可以运行试试。
另外还有一个链接:[《50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs》](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/)
这样不就好了。
```go
type Server struct {
US UserStep `json:"us"`
Timestamp string `json:"time_stamp"`
}
```
#6