关于go:无法将比较结构转换为nil


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*技巧,但我无法将其编译-有人知道如何正确地执行此操作吗?

enter image description here

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
}