我發現自己經常執行以下操作,并希望減少重復。var customer model.Customerdecoder := json.NewDecoder(r.Body)decoder.DisallowUnknownFields()err := decoder.Decode(&customer)if err != nil { fmt.Print(err)}doSomethingWith(customer)我想寫一個簡單的函數,可以吸收和一些對象來映射到,即r.Bodymodel.Customer所以類似的東西(無效的golang)func fromJson(body io.ReadCloser, obj T) { var obj decoder := json.NewDecoder(body) decoder.DisallowUnknownFields() err := decoder.Decode(&obj) if err != nil { fmt.Print(err) } return obj;}
1 回答

DIEA
TA貢獻1820條經驗 獲得超2個贊
您可以使用 或 等待泛型:interface{}
func fromJson(body io.ReadCloser, obj interface{}) error { decoder := json.NewDecoder(body) decoder.DisallowUnknownFields() return decoder.Decode(obj) }
例如,如果您檢查文檔的Decode
,您可以看到它使用此機制,這在Go中很常見。
工作樣本:https://play.golang.org/p/D3GDKtUJxHC
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消