单值上下文中的多值strconv.ParseInt()

时间:2017-11-06 13:22:49

标签: parsing go type-conversion

我有以下代码:

var i2 uint64;
var err error;
i2, err = uint64(strconv.ParseInt(scanner.Text(), 64, 64));

我收到了错误:

multiple-value strconv.ParseInt() in single-value context

根据我在互联网上找到的所有内容,这意味着我忽略了ParseInt返回的两个参数,但我使用的是错误的。 我知道也许错误是非常愚蠢的,但我刚开始学习Go,这让我很困惑。

2 个答案:

答案 0 :(得分:6)

表达式uint64(...)是一个类型conversion,它不能有多个参数(操作数),但由于strconv.ParseInt()有两个返回值,你基本上都将两者都传递给类型转换,无效。

而是这样做:

i, err := strconv.ParseInt(scanner.Text(), 64, 64)
// Check err
i2 := uint64(i)

请注意,基数不能超过36,因此当您以64为基数时,您肯定会收到错误。

或者使用strconv.ParseUint(),它会立即为您返回uint值:

i, err := strconv.ParseUint(scanner.Text(), 16, 64)
// i is of type uint64, and ready to be used if err is nil

(这里我使用了有效的16基础。使用你需要的任何东西。)

另见相关问题+答案:Go: multiple value in single-value context

答案 1 :(得分:2)

  

单值上下文中的多值strconv.ParseInt()

ParseInt返回2个值:整数和错误。所以你不能在函数参数中使用它们,只允许一个值。您可能先获得valueerror,然后在下一次操作中使用value