我有以下代码:

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,这让我很困惑。

最佳答案

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

而是这样做:

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

关于parsing - 单值上下文中的多值strconv.ParseInt(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47138003/

10-10 19:55