type TodoUpdateLog struct {
ID uint `json:"id"`
Name Range[string] `json:"name,omitempty"`
Status Range[string] `json:"status,omitempty"`
Desc Range[json.RawMessage] `json:"desc,omitempty"`
Priority Range[string] `json:"priority,omitempty"`
EstimatedStartDT Range[time.Time] `json:"estimate_start_dt,omitempty"`
EstimatedEndDT Range[time.Time] `json:"estimate_end_dt,omitempty"`
Owners Range[[]string] `json:"owners,omitempty"`
Followers Range[[]string] `json:"followers,omitempty"`
}
type TodoUpdateRequest struct {
ID uint `json:"id"`
Name Optional[string] `json:"name,omitempty"`
Status Optional[string] `json:"status,omitempty"`
Desc Optional[json.RawMessage] `json:"desc,omitempty"`
Priority Optional[string] `json:"priority,omitempty"`
EstimatedStartDT Optional[time.Time] `json:"estimate_start_dt,omitempty"`
EstimatedEndDT Optional[time.Time] `json:"estimate_end_dt,omitempty"`
Owners Optional[[]string] `json:"owners,omitempty"`
Followers Optional[[]string] `json:"followers,omitempty"`
}
type TodoUpdate[T any] struct {
ID uint `json:"id"`
Name T[string] `json:"name,omitempty"`
Status T[string] `json:"status,omitempty"`
Desc T[json.RawMessage] `json:"desc,omitempty"`
Priority T[string] `json:"priority,omitempty"`
EstimatedStartDT T[time.Time] `json:"estimate_start_dt,omitempty"`
EstimatedEndDT T[time.Time] `json:"estimate_end_dt,omitempty"`
Owners T[[]string] `json:"owners,omitempty"`
Followers T[[]string] `json:"followers,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
我有两个模型“TodoUpdateLog”和“TodoUpdateRequest”,这两个模型都有相同的字段和相同的 json 标签。两种型号之间的区别仅在于类型
现在我想将两个模型合并为一个,有什么方法可以实现这一点吗?
拥有单一类型并在两个不同的上下文中使用它(用其命名)怎么样?
type TodoUpdateLogOrRequest struct {
ID uint `json:"id"`
Name Range[string] `json:"name,omitempty"`
Status Range[string] `json:"status,omitempty"`
Desc Range[json.RawMessage] `json:"desc,omitempty"`
Priority Range[string] `json:"priority,omitempty"`
EstimatedStartDT Range[time.Time] `json:"estimate_start_dt,omitempty"`
EstimatedEndDT Range[time.Time] `json:"estimate_end_dt,omitempty"`
Owners Range[[]string] `json:"owners,omitempty"`
Followers Range[[]string] `json:"followers,omitempty"`
}
func main() {
var updateLog, updateRequest TodoUpdateLogOrRequest
fmt.Println(updateLog, updateRequest)
}
Run Code Online (Sandbox Code Playgroud)