问题描述
我有以下代码:
var i2 uint64;
var err error;
i2, err = uint64(strconv.ParseInt(scanner.Text(), 64, 64));
我收到了错误:
multiple-value strconv.ParseInt() in single-value context
根据我在Internet上找到的所有内容,这意味着我忽略了ParseInt返回的两个参数,但是我使用的是err.我知道错误可能很愚蠢,但是我刚开始学习Go,这让我很困惑.
According to everything I found on the Internet, this means that I am ignoring the two parameters returned by ParseInt, but I am using err.I know that maybe the mistake is very stupid, but I just started to learn Go and this confused me a lot.
推荐答案
表达式uint64(...)
是类型 conversion ,并且不能有多个参数(操作数),但是由于 strconv.ParseInt()
有2个返回值,基本上都是将两者都传递给类型转换,这是无效的.
The expression uint64(...)
is a type conversion, and it cannot have multiple arguments (operands), but since strconv.ParseInt()
has 2 return values, you're basically passing both to the type conversion, which is not valid.
相反,这样做:
i, err := strconv.ParseInt(scanner.Text(), 64, 64)
// Check err
i2 := uint64(i)
请注意,基数不能大于36
,因此在传递64
作为基数时,肯定会出现错误.
Note that the base cannot be greater than 36
, so you'll definitely get an error as you're passing 64
as the base.
或使用 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
基数.使用您必须使用的任何内容.)
(Here I used a valid, 16
base. Use whatever you have to.)
另请参阅相关问题和解答:转到:多值在单值上下文中
Also see related question+answer: Go: multiple value in single-value context
这篇关于单值上下文中的多值strconv.ParseInt()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!