Cannot convert compare struct with nil
本问题已经有最佳答案,请猛点这里访问。
我有这个代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var user person.Model; json.NewDecoder(r.Body).Decode(&user) if user.Handle =="" || user.Email =="" { panic(utils.AppError{ StatusCode: 409, Message: "Missing handle/email property in request body.", }) } if v.PeopleByHandle[user.Handle] != nil { } |
person.model是一个结构,但我得到以下错误:
Cannot convert nil to type Model more
我尝试了一些&;and*技巧,但我无法将其编译-有人知道如何正确地执行此操作吗?
person.model结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 | type Model struct { ID int `json:"id, omitempty"` Handle string `json:"handle, omitempty"` Role string `json:"role, omitempty"` Password string `json:"password, omitempty"` Work string `json:"work, omitempty"` Image string `json:"image, omitempty"` Firstname string `json:"firstname, omitempty"` Lastname string `json:"lastname, omitempty"` Phone string `json:"phone, omitempty"` Email string `json:"email, omitempty"` } |
你的问题不清楚。如果要将结构与nil进行比较,则变量应为指针,因为结构的零值为空结构,但指针的零值为nil。但是,如果您想在地图中检查一个键,可以这样做:
1 2 3 | if obj,ok := v.PeopleByHandle[user.Handle] ;ok { // Found } |