如何在golang中检查&{<nil>}?

huangapple go评论148阅读模式
英文:

How to check for &{<nil> } in golang

问题

我正在尝试检查从数据库查询中的结构体是否为nil,但是它没有起作用。

fmt.Println(loginResponse) // &amp;{&lt;nil&gt;   }

if !reflect.ValueOf(loginResponse).IsNil() { // 这个条件不起作用

    response := models.Response{
        Message: "登录成功",
        Success: true,
        Output:  token,
    }
    return c.JSON(response)

} 


if !reflect.ValueOf(loginResponse).IsZero() { // 这个条件也不起作用

    response := models.Response{
        Message: "登录成功",
        Success: true,
        Output:  token,
    }
    return c.JSON(response)

} 

这两个条件都不起作用。请帮忙看看。

登录响应结构体如下:

type LoginResponse struct {
    Id          interface{} `json:"_id,omitempty" bson:"_id,omitempty"`
    Email       string      `json:"email"`
    Gender      string      `json:"gender"`
    PhoneNumber string      `json:"phonenumber"`
}

希望对你有帮助!

英文:

I am trying to check whether the struct is nil or not from the db query but its not working.
fmt.Println(loginResponse) // &amp;{&lt;nil&gt; }

if !reflect.ValueOf(loginResponse).IsNil() { // Its not working

		response := models.Response{
			Message: &quot;Login Success&quot;,
			Success: true,
			Output:  token,
		}
		return c.JSON(response)

	} 


if !reflect.ValueOf(loginResponse).IsZero() { // its also not working

		response := models.Response{
			Message: &quot;Login Success&quot;,
			Success: true,
			Output:  token,
		}
		return c.JSON(response)

	} 

Both the conditions are not working .Please help

Login response

type LoginResponse struct {
	Id          interface{} `json:&quot;_id,omitempty&quot; bson:&quot;_id,omitempty&quot;`
	Email       string      `json:&quot;email&quot;`
	Gender      string      `json:&quot;gender&quot;`
	PhoneNumber string      `json:&quot;phonenumber&quot;`
}

答案1

得分: 1

尝试这样做,希望能够成功:

if (LoginResponse{}) != *loginResponse { // 由于获取的是结构体指针的地址,所以需要解引用

    response := models.Response{
        Message: "登录成功",
        Success: true,
        Output:  token,
    }
    return c.JSON(response)

}
英文:

Try doing this ,hopefully it works

if (LoginResponse{}) != *loginResponse { // as your getting address so derferencing the pointer to struct

		response := models.Response{
			Message: &quot;Login Success&quot;,
			Success: true,
			Output:  token,
		}
		return c.JSON(response)

	}

huangapple
  • 本文由 发表于 2022年1月12日 14:31:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/70677240.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定