我有以下代码:
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(...)是类型转换,它不能有多个参数(操作数),但是由于strconv.ParseInt()有2个返回值,因此基本上都是将两者都传递给类型转换,这是无效的。
uint64(...)
strconv.ParseInt()
而是这样做:
i, err := strconv.ParseInt(scanner.Text(), 64, 64) // Check err i2 := uint64(i)
请注意,基数不能大于36,因此在传递64基数时肯定会出现错误。
36
64
或使用strconv.ParseUint()可以立即返回uint值:
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基本值。使用您必须使用的任何值。)
16