我有一个包含整数的字符串(已从文件中读取)。
我正在尝试使用 --- 将 string
转换为 int
strconv.ParseInt()
。 ParseInt
要求我提供位大小(位大小 0、8、16、32 和 64 对应于 int、int8、int16、int32 和 int64)。
从文件中读取的整数很小(即它应该适合一个普通的 int)。但是,如果我传递的位大小为 0,则会得到类型为 int64
的结果(大概是因为我在 64 位操作系统上运行)。
为什么会这样?我怎样才能得到一个普通的int? (如果有人快速了解何时以及为何我应该使用不同的 int 类型,那就太棒了!)
编辑:我可以使用 int([i64_var])
将 int64 转换为普通 int。但我仍然不明白为什么 ParseInt()
在我请求位大为 0 时给我一个 int64。
原文由 Isaac Dontje Lindell 发布,翻译遵循 CC BY-SA 4.0 许可协议
ParseInt
总是返回int64
。bitSize
定义值的范围。http://golang.org/pkg/strconv/#ParseInt
http://golang.org/pkg/builtin/#int
所以
int
将来可能大于 32 位,或者在某些系统上,如int
在 C 中。我想在某些系统上
int64
可能比int32
更快,因为该系统仅适用于 64 位整数。以下是
bitSize
为 8 时的错误示例:http://play.golang.org/p/_osjMqL6Nj