首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将接口{}转换为int go-gin时出错

将接口{}转换为int go-gin时出错
EN

Stack Overflow用户
提问于 2016-08-25 18:06:32
回答 1查看 629关注 0票数 4

我有一个从*gin.Context收到的interface{}类型值

代码语言:javascript
复制
c.MustGet("account")

当我尝试使用以下命令将其转换为int时:

代码语言:javascript
复制
c.MustGet("account").(int)

我得到一个错误:

代码语言:javascript
复制
interface conversion: interface is float64, not int

此接口的值为1。为什么我会收到这个错误?我在sql查询中使用此值。我不能将它转换为float64,因为sql语句会失败。如何将其转换为int

EN

回答 1

Stack Overflow用户

发布于 2016-08-25 18:13:10

这个错误是不言而喻的:存储在interface{}值中的动态值的类型是float64,这与int的类型不同。

提取float64类型的值(像您一样使用type assertion ),并使用简单的type conversion进行转换

代码语言:javascript
复制
f := c.MustGet("account").(float64)
i := int(f)
// i is of type int, you may use it so

或者一行:

代码语言:javascript
复制
i := int(c.MustGet("account").(float64))

要验证类型和值,请执行以下操作:

代码语言:javascript
复制
fmt.Printf("%T %v\n", i, i)

两种情况下的输出(在Go Playground上试用):

代码语言:javascript
复制
int 1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39142320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档