当前位置: 首页 > 面试题库 >

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

袁良弼
2023-03-14
问题内容

我有以下代码:

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个返回值,因此基本上都是将两者都传递给类型转换,这是无效的。

而是这样做:

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中的错误处理,我经常会遇到多个值函数。到目前为止,我的管理方式非常混乱,我正在寻找编写更简洁代码的最佳实践。 假设我具有以下功能: 我如何优雅地分配一个新变量。在引入错误处理之前,我的函数刚刚返回,我可以简单地做到这一点: 现在,我这样做: 有没有办法直接访问第一个返回的变量? 问题答案: 如果是多值返回函数,则在调用函数时不能引用具有特定结果值的字段或方法。 如果他们中的一个

  • 问题内容: 有人可以解释为什么这行代码: 正在产生这些错误: 谢谢!布赖恩 问题答案: 两者都返回错误,因此您不能直接分配它们。 您至少需要忽略错误返回值。 带有: 但是最佳做法是检查错误,如果不是,请采取措施。 实际上,twotwotwo在注释中添加了: 不过,请不要忽略,否则有一天您的程序将无法执行应做的事情,并且您将不知道为什么。 很多时候,您希望函数也返回错误,而您想要的“默认”处理程序是

  • 问题内容: 我有一个这样的STRING切片数组: 请记住,阵列不断增加。我只是发布一个示例数组。 现在,我将一些浮点数转换为字符串,以便可以将其附加到字符串切片中。但是,我需要对这些数字进行一些数学运算。我想将第二个切片的字符串编号(5343340.56343)添加到第三个字符串编号(22139.461201388)。每片中的其他2个浮点数都相同。为此,我需要先将它们转换为float64。得到总和

  • 我有一个带有主窗口的应用程序。它有自己的线程和opengl上下文。这个应用程序每个处理器还有一个工作线程来创建和上传软件渲染的纹理。这工作得非常好。 我担心的是工作线程opengl上下文是使用主窗口的device_context创建的。因此,在双处理器系统的情况下,这意味着3个opengl上下文被绑定到同一个window device_context。它们都是在主窗口线程中创建的,然后调用shar

  • 我使用的是Camel2.15版本,我尝试通过一个名为length of account number的额外属性作为交换,并尝试与路由中的value匹配,但它没有工作。 处理器: public void processMortgage(final Exchange Exchange)引发ServiceException{MessageContentsList MessageContentsList=

  • 我正在浏览GraphQL Express文档,在这些文档中有一个根值和上下文的定义,如下所示 rootValue:要作为rootValue从graphql传递给graphql()函数的值。js/src/execute。js。 context:要作为上下文从graphql传递给graphql()函数的值。js/src/execute。js。如果未提供上下文,则将请求对象作为上下文传递。 现在,有人能