【问题标题】:Convert uint32 to int in Go在 Go 中将 uint32 转换为 int
【发布时间】:2016-02-17 05:30:10
【问题描述】:

如何在 Go 中将 uint32 转换为 int

一点背景知识,我正在从一个文件中读取数据,这为我提供了一个字节数组的正确大小,如下所示:

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

但是,bufio.Discard func 需要一个 int。我能够使用 fmt 将大小转换为字符串,然后使用 strconv 将其转换为 int。必须有一种更优雅的方式来做到这一点。

【问题讨论】:

  • 简单的type conversion,简短的:i := int(size) 或详细的:var intResult int = int(size)
  • 起初我认为简单的演员表也可以。但是,Go 似乎不允许这样做,但错误消息并不清楚。
  • 什么错误信息?你会介意张贴吗?简单的转换确实有效,请参阅 Go 操场上的这个示例:play.golang.org/p/iPJcmvW4MS
  • @icza:这不是解决问题的好方法。不需要临时变量。
  • @peterSO 是的,不需要临时变量。我并不是要暗示这一点,只是想表明一个简单的转换就可以做到。无论有没有临时变量,它都可以工作。

标签: go


【解决方案1】:

The Go Programming Language Specification

Conversions

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

例如,

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

【讨论】:

  • 谢谢你,我想这些年来我写了太多类似 c 的演员表。谢谢大家的回复!
【解决方案2】:

只需使用int() 转换函数

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 2017-10-15
    • 2011-11-14
    • 1970-01-01
    • 2011-12-22
    • 2013-04-05
    • 2016-12-09
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多