我有以下代码:
var i2 uint64;
var err error;
i2, err = uint64(strconv.ParseInt(scanner.Text(), 64, 64));我收到了一个错误:
multiple-value strconv.ParseInt() in single-value context根据我在互联网上发现的一切,这意味着我忽略了ParseInt返回的两个参数,但我使用的是错误的。我知道这个错误可能很愚蠢,但我才刚开始学走,这让我很困惑。
发布于 2017-11-06 13:24:59
表达式uint64(...)是一个类型转换,它不能有多个参数(操作数),但是由于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基。使用你必须做的一切。)
还请参阅相关的question+answer:Go:单值上下文中的多个值
发布于 2017-11-06 13:46:09
单值上下文中的多值strconv.ParseInt()
ParseInt返回两个值:整数和错误。因此,不能在只允许一个值的函数参数中使用它们。您可以首先获得value和error,然后在下一个操作中使用value。
https://stackoverflow.com/questions/47138003
复制相似问题