embedded struct field override

新struct内的在marshal时可以覆盖掉base里面的值,同时还能访问到base的。

type Base struct{
    Env string `json:"env"`
}

type Derived struct {
    Base
    Env int `json:"env"`
    Age int `json:"age"`
}

func main() {
    //b := Base(env:)
    d := Derived{Base:Base{Env: "hehe"}, Env: 1, Age: 2}
    str, err := json.Marshal(&d)
    fmt.Println(err)
    fmt.Println(string(str))
    fmt.Println(d.Base.Env, d.Env)
}

output:
<nil>
{"env":1,"age":2}
hehe 1

猜你喜欢

转载自blog.csdn.net/weixin_33892359/article/details/90781731
今日推荐