通过考虑数据类型之间的相同功能来创建抽象,而不是相同字段
type Entity interface {
UnmarshalerHTTP(*http.Request) error
}
func GetEntity(r *http.Request, v Entity) error {
return v.UnmarshalerHTTP(r)
}
type User struct {
...
}
func (u *User) UnmarshalHTTP(r *http.Request) error {
// ...
}
func foo() {
var u User
if err := GetEntity(req, &u); err != nil {
// ...
}
}