在Go语言中将uint32转换为int

18

在Go语言中,如何将uint32转换为int?背景介绍一下,我正在从文件中读取数据,并使用以下代码从字节数组中获取正确的大小:

size := binary.BigEndian.Uint32(b[4:])

然而,bufio.Discard函数需要一个整数参数。我使用fmt将size转换为字符串,然后使用strconv将其转换为整数。但一定有更加优雅的方法来实现这个转换。


4
简单的类型转换(type conversion)可以使用短语句 i := int(size) 或者冗长的语句 var intResult int = int(size) - icza
起初我也以为一个简单的转换会起作用。然而,Go 似乎不允许这样做,尽管错误信息并不清楚。 - Brian Boyd
7
什么错误信息?你可以贴出来吗?简单的转换是可行的,参见这个在 Go Playground 上的例子:http://play.golang.org/p/iPJcmvW4MS - icza
@icza:这不是一个好的解决方案。没有必要使用临时变量。 - peterSO
3
是的,临时变量不是必需的。我并不是想暗示这一点,我只是想表明一个简单的转换就可以完成它。它可以有或没有临时变量。 - icza
2个回答

22

只需使用 int() 强制类型转换函数


17

Go编程语言规范

类型转换

类型转换是形如 T(x) 的表达式,其中 T 是一个类型,x 是可以转换为类型 T 的表达式。

例如:

size := binary.BigEndian.Uint32(b[4:])
n, err := rdr.Discard(int(size))

谢谢,我想这些年来我写了太多类似C语言的转换。感谢所有的回复! - Brian Boyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接