英文:
assert interface{} to int64
问题
我正在使用gin框架,使用c.shouldBind
将数据绑定到结构体,然后使用c.set
将参数设置到上下文中。当我使用c.getInt64
获取参数时,它无法返回我在上下文中设置的值(我设置为1),而是返回0。它无法将float64类型的1断言为int64类型的0。
我已经搜索了谷歌,但没有找到我想要的答案。
以下是我的调试代码:
// GetInt64返回与键关联的值作为整数。
func (c *Context) GetInt64(key string) (i64 int64) {
if val, ok := c.Get(key); ok && val != nil {
i64, _ = val.(int64)
}
return
}
val的值是1,但它返回0。
所以有人可以告诉我为什么以及如何解决吗?
英文:
i am using gin, i use c.shouldBind
to bind the data to the struct, the use c.set
to set the params in the context. when i use c.getInt64
to get the params, it can't return the value i set in the context(i set a 1), it return a zero. it failed to assert a float64 1 to a int64 0.
i have google it but can't get the answer i want
here are my debug code
// GetInt64 returns the value associated with the key as an integer.
func (c *Context) GetInt64(key string) (i64 int64) {
if val, ok := c.Get(key); ok && val != nil {
i64, _ = val.(int64)
}
return
}
the val is 1, but it returns 0
So can anybody tell me why and how to solve it.
答案1
得分: 1
Golang无法隐式转换类型。您可以使用GetFloat64
方法。
英文:
Golang can't convert types implicitly. You can use the GetFloat64
method.
答案2
得分: 0
这取决于你实际设置的值,并检查键是否正确。之后,你可以在Get
之后使用断言,例如:value := c.Get("From_validator_page").(Int64)
。
英文:
It depends the value which you really set in, and check the key is right, After that, Maybe you could use assertion after Get
like: value := c.Get("From_validator_page").(Int64)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论