转换简单字符串
最简单的方法是使用strconv.Atoi() 函数。
请注意,还有许多其他方法。例如fmt.Sscan() 和strconv.ParseInt(),它们提供了更大的灵活性,因为您可以指定基数和位大小。也如strconv.Atoi()的文档中所述:
Atoi 等价于 ParseInt(s, 10, 0),转换为 int 类型。
这是一个使用上述函数的示例(在 Go Playground 上尝试):
flag.Parse()
s := flag.Arg(0)
if i, err := strconv.Atoi(s); err == nil {
fmt.Printf("i=%d, type: %T\n", i, i)
}
if i, err := strconv.ParseInt(s, 10, 64); err == nil {
fmt.Printf("i=%d, type: %T\n", i, i)
}
var i int
if _, err := fmt.Sscan(s, &i); err == nil {
fmt.Printf("i=%d, type: %T\n", i, i)
}
输出(如果使用参数"123" 调用):
i=123, type: int
i=123, type: int64
i=123, type: int
解析自定义字符串
还有一个方便的fmt.Sscanf(),它提供了更大的灵活性,因为您可以在输入string 中指定数字格式(如宽度、基数等)以及额外的额外字符。
这对于解析包含数字的自定义字符串非常有用。例如,如果您的输入以 "id:00123" 的形式提供,其中您有一个前缀 "id:",并且该数字固定为 5 位数字,如果较短则用零填充,这很容易解析如下:
s := "id:00123"
var i int
if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {
fmt.Println(i) // Outputs 123
}