使用GO中的常见错误消息将字符串解析为不同类型

使用GO中的常见错误消息将字符串解析为不同类型,go,error-handling,Go,Error Handling,我希望将[]字符串值解析为特定类型(例如int、float等),因此我必须对不同的行使用不同的解析函数。我的代码: value,err:=strconv.Atoi(第[1]行) value1,err:=strconv.ParseFloat(第[4]行,第6行) value2,err:=strconv.ParseFloat(第[5]行,第6行) 值3,err:=strconv.Atoi(第[2]行) 我必须确保每个值都已解析,因此对于每个值,我必须有err!=无。有没有什么方法可以使它只出现一个

我希望将
[]字符串
值解析为特定类型(例如int、float等),因此我必须对不同的行使用不同的解析函数。我的代码:

value,err:=strconv.Atoi(第[1]行)
value1,err:=strconv.ParseFloat(第[4]行,第6行)
value2,err:=strconv.ParseFloat(第[5]行,第6行)
值3,err:=strconv.Atoi(第[2]行)

我必须确保每个值都已解析,因此对于每个值,我必须有
err!=无
。有没有什么方法可以使它只出现一个常见的错误而不出现错误

如果出错!=零{
返回
}

每行之后?

您可以使用fmt.Sscanf进行一次错误检查:

package main

import (
    "fmt"
)

func main() {
    var i int
    var j float64
    var k int
    if _, err := fmt.Sscanf("1,3.14,5", "%d,%f,%d", &i, &j, &k); err != nil {
        panic(err)
    }
    fmt.Println(i, j, k)
}
您需要使用一些分隔符来连接这些行,但这很简单


此外,还有一个关于如何更好地处理Go 2的多个错误的讨论,我不确定它目前的状态如何,但您可以在这里阅读:

“有没有什么方法可以使每行后面没有[…]的错误?”没有。要使代码更干净,您可以在一个函数中抽象错误检查部分,然后调用它们进行解析。因此存在这种可能性(sscanf)。有错误处理技术的IMHO线程只与我的问题相关,没有重复。Sscanf工作很好,草稿看起来很有希望,谢谢分享