寻找一种优雅的解析整数的方法

时间:2012-12-16 13:07:16

标签: go

现在我正在执行以下操作以解析字符串中的整数,然后将其转换为int类型:

tmpValue, _ := strconv.ParseInt(str, 10, 64) //returns int64
finalValue = int(tmpValue)

这是非常冗长的,绝对不是很漂亮,因为我还没有找到一种方法在ParseInt调用中进行转换。有没有更好的方法呢?

3 个答案:

答案 0 :(得分:5)

似乎函数strconv.Atoi做了你想要的,除了它无论int的位大小都有效(你的代码似乎假设它是64位宽)。

答案 1 :(得分:3)

如果你必须在你的程序中写一次,那么我认为没有问题。如果您需要在几个地方,您可以编写一个简单的专业化包装器,例如:

func parseInt(s string) (int, error) {
        i, err := strconv.ParseInt(str, 10, 32)  // or 64 on 64bit tip
        return int(i), err
}

标准库的目的不是为每种可能的数字类型和/或它们的组合提供(臃肿的)API。

答案 2 :(得分:2)

不要忘记检查错误。例如,

package main

import (
    "fmt"
    "strconv"
)

func main() {
    s := "123"
    i, err := strconv.Atoi(s)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(i)
}

输出:

123