Go 字符串到int的类型转换

Go 字符串到int的类型转换,go,Go,好的,我在字符串到字节写入的类型转换方面遇到了困难。这是编译器错误: 无法将行[5](类型uint8)用作函数参数中的类型字符串 无法在函数参数中将&v(type*字段)用作int类型 这是第[5]行的示例:$15000.00 我声明了一个结构: type Field struct { Eia uint8 } 以下是主要的实现: for { record, err := reader.Read() if err == io.EOF { break } e

好的,我在字符串到字节写入的类型转换方面遇到了困难。这是编译器错误:

无法将行[5](类型uint8)用作函数参数中的类型字符串

无法在函数参数中将&v(type*字段)用作int类型

这是第[5]行的示例:$15000.00

我声明了一个结构:

type Field struct {
Eia uint8
}
以下是主要的实现:

for {
    record, err := reader.Read()
    if err == io.EOF {
        break
    } else if err != nil {
        panic(err)
    }

    var v Field
    for _, row := range record {
        eia, err := strconv.ParseInt(row[5], 8, &v) // Estimated Incoming Amount
        if err == nil {
            fmt.Printf("%+v\n", v)
        } else {
            fmt.Println(err)
            fmt.Printf("%+v\n", v)
        }

有人能给我解释一下strconv如何将行转换成整数吗?

如果你给出了一个完整的示例,那么就更容易给出完整的解决方案

ParseInt()接受字符串(您可能必须执行
字符串(行[5])
)、基(您可能指的是10)和位大小(这是您应该放置8的位置)

它重新运行一个int(eia),它不会将它放入结构中,因为看起来您正在尝试


相反,如果err==nil{v.Eia=Eia}

则必须首先将行[5]转换为字符串。此外,您还删除了多余的&vI未能提及第[5]行是从csv/编码包中读取的。因此,默认情况下它已经是一个字符串。您没有向我们显示记录的类型。信息不足的情况下很难提供帮助。正如您所提到的,我通过首先强制转换字符串变量并使用正确的基和位大小对其进行解析,成功地实现了字符串转换。这里是:解决方案的唯一警告是,我必须消除美元符号($),因为它会导致无效的语法转换错误。例如,您可以使用
strings.trimlefit
删除不需要的任何前导字符