我有一个这样的STRING切片数组:
[[header1 header2 startdate enddate header3 header4]
[item1 100 01/01/2017 02/01/2017 5343340.56343 3.77252223956]
[item2 554 01/01/2017 02/01/2017 22139.461201388 17.232284405]]
请记住,阵列不断增加。我只是发布一个示例数组。
现在,我将一些浮点数转换为字符串,以便可以将其附加到字符串切片中。但是,我需要对这些数字进行一些数学运算。我想将第二个切片的字符串编号(5343340.56343)添加到第三个字符串编号(22139.461201388)。每片中的其他2个浮点数都相同。为此,我需要先将它们转换为float64。得到总和后,我将需要将它们转换回字符串,以便可以将其附加到我的切片中,我将弄清楚该怎么做。
要将字符串项转换为float64,这是我的功能:
for _, i := range data[1:] {
if i[0] == "item1" {
j := strconv.ParseFloat(i[4], 64)
}
if i[0] == "item2" {
k := strconv.ParseFloat(i[4], 64)
}
sum := j + k
}
这给出了一个错误:单值上下文中的多值strconv.ParseFloat()所以我的问题是:
如何将字符串值转换为Float64。
可选:关于如何从每个切片中添加2个浮点数的任何建议?
任何帮助表示赞赏!
您收到的错误是因为该函数ParseFloat
返回两个参数,而您忽略了第二个。
j, err := strconv.ParseFloat(i[4], 64)
if err != nil {
// insert error handling here
}
(...)
在使用它之前,请尝试始终在godocs中检查该函数的签名。
问题内容: 由于Go中的错误处理,我经常会遇到多个值函数。到目前为止,我的管理方式非常混乱,我正在寻找编写更简洁代码的最佳实践。 假设我具有以下功能: 我如何优雅地分配一个新变量。在引入错误处理之前,我的函数刚刚返回,我可以简单地做到这一点: 现在,我这样做: 有没有办法直接访问第一个返回的变量? 问题答案: 如果是多值返回函数,则在调用函数时不能引用具有特定结果值的字段或方法。 如果他们中的一个
问题内容: 我有以下代码: 我收到了错误: 根据我在Internet上找到的所有内容,这意味着我忽略了ParseInt返回的两个参数,但我使用的是err。我知道错误可能很愚蠢,但是我刚开始学习Go,这让我很困惑。 问题答案: 表达式是类型转换,它不能有多个参数(操作数),但是由于有2个返回值,因此基本上都是将两者都传递给类型转换,这是无效的。 而是这样做: 请注意,基数不能大于,因此在传递基数时肯
问题内容: 有人可以解释为什么这行代码: 正在产生这些错误: 谢谢!布赖恩 问题答案: 两者都返回错误,因此您不能直接分配它们。 您至少需要忽略错误返回值。 带有: 但是最佳做法是检查错误,如果不是,请采取措施。 实际上,twotwotwo在注释中添加了: 不过,请不要忽略,否则有一天您的程序将无法执行应做的事情,并且您将不知道为什么。 很多时候,您希望函数也返回错误,而您想要的“默认”处理程序是
在普通字符串中,我可以用反斜杠转义: 在字符串文字中有可能做同样的事情吗?反斜杠不再是转义字符: 到目前为止,我看到的唯一解决方案是字符串连接,这非常难看,以及嵌套插值,这开始变得有点可笑:
我有一种使用模式进行字符串插值的语法:大致如下: 现在这工作和标记一切主要是我想要的,但它确实有2个缺陷。 如果RBRACES的数量过多,它会弹出第一个默认模式,这会使IDE出现故障,而不仅仅是显示错误。 关闭块和关闭插值的标记是相同的,因此我无法根据需要突出显示它们。(这是主要的) 我的IDE仅基于令牌突出显示,所以这是一个问题,我希望能够以不同的方式突出显示它们。所以基本上我想要一个解决方案,
布尔值必须为True或False。 那为什么 输出:是 我不明白为什么是打印,因为“poi”不是真是假。