现在我做的,以便从字符串解析整数,然后将其转换为int
类型如下:寻找一种优雅的方式来解析整数
tmpValue, _ := strconv.ParseInt(str, 10, 64) //returns int64
finalValue = int(tmpValue)
这是相当冗长,绝对不漂亮,因为我还没有找到方法在ParseInt
调用中进行转换。有没有更好的方法来做到这一点?
现在我做的,以便从字符串解析整数,然后将其转换为int
类型如下:寻找一种优雅的方式来解析整数
tmpValue, _ := strconv.ParseInt(str, 10, 64) //returns int64
finalValue = int(tmpValue)
这是相当冗长,绝对不漂亮,因为我还没有找到方法在ParseInt
调用中进行转换。有没有更好的方法来做到这一点?
看起来功能strconv.Atoi
做你想要的,除了它可以工作,不管int
(你的代码似乎认为它是64位宽)的位大小。
如果你不得不在你的程序中编写一次,那么我认为没有问题。如果您需要在几个地方,你可以写一个简单的专业化的包装,例如:
func parseInt(s string) (int, error) {
i, err := strconv.ParseInt(str, 10, 32) // or 64 on 64bit tip
return int(i), err
}
标准库的目的不是提供(臃肿)API的每一个可能的数值类型和/或它们的组合。
不要忘记检查错误。例如,
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
我把除去'base'参数,这是不被使用的自由。否则,+1。 –
哦,对。谢谢! ;-) – zzzz
实际上,关于“臃肿的API”的观点有点偏离,因为这个特定的情况*被strconv.Atoi覆盖。 –