我正在为一个项目编写后端,后端通过在请求正文中编码为 json 的 POST 请求接收用户数据。
我有两个结构:
在新帐户创建期间存储用户数据的结构:
type User struct {
Guid string ``
Name string `json:"Name"`
Pass string `json:"Pass"`
Username string `json:"Username"`
Email string `json:"Email"`
Phone string `json:"Phone"`
Country string `json:"Country"`
}
存储登录数据的结构
type Signin struct {
Username string `json:"Username"`
Pass string `json:"Pass"`
}
和一个 json 解码器函数(用于解码来自请求正文的数据):
func extractAndAssignInfo(req *http.Request, dataStruct interface{}) interface{}{
decoder := json.NewDecoder(req.Body)
err := decoder.Decode(&dataStruct)
if err != nil {
log.Fatal(err)
}
return reflect.ValueOf(dataStruct).Interface()
}
有没有办法让extractAndAssignInfo()函数返回结构?
由于 Guid 是使用不同的函数计算的,所以当我尝试做
userdata := ExtractAndAssignInfo(req, User{})
该函数的返回值给出了一个类型map[string]interface {},如果我将返回类型更改为一个结构,那么它将不是一个可以解码并返回所需结构的“通用”函数。
我不确定这是否是解决它的最佳方法。我也很感激在返回结构时可以重用相同函数的任何其他方式。
holdtom
相关分类