strconv.Atoi和Itoa用于Go中字符串与整数互转:Atoi将字符串转为int,需处理错误;Itoa将int转为字符串,无错误返回。

在Go语言中,字符串和整数之间的转换是常见操作。strconv.Atoi 和 strconv.Itoa 是两个最常用的方法,分别用于将字符串转为整数和将整数转为字符串。它们位于 strconv 包中,使用简单但需要注意错误处理和数据范围。
strconv.Atoi:将字符串转换为整数
Atoi 是 "ASCII to integer" 的缩写,用于将字符串形式的数字转换成 int 类型。
函数签名如下:
func Atoi(s string) (int, error)
立即学习“go语言免费学习笔记(深入)”;
它返回两个值:转换后的整数和一个可能的错误。如果字符串不是有效的整数表示,error 将不为 nil。
示例:
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换失败:", err)
return
}
fmt.Printf("类型: %T, 值: %d\n", num, num)
// 输出: 类型: int, 值: 123
注意:空字符串、包含字母或符号(除 + 或 - 外)的字符串都会导致转换失败。
例如:strconv.Atoi("abc") → 错误strconv.Atoi("-456") → 成功,返回 -456
strconv.Itoa:将整数转换为字符串
Itoa 是 "integer to ASCII" 的缩写,用于将 int 类型转换为字符串。
函数签名如下:
func Itoa(i int) string
它只返回一个字符串结果,没有错误返回,因为整数到字符串的转换总是成功的。
示例:
num := 456
str := strconv.Itoa(num)
fmt.Printf("类型: %T, 值: %s\n", str, str)
// 输出: 类型: string, 值: 456
这个方法适用于拼接日志、生成ID、格式化输出等场景。
实际使用中的注意事项
虽然这两个函数使用简单,但在实践中要注意以下几点:
- Atoi 只能解析十进制整数,默认支持正负号,但不支持十六进制或二进制格式
- 超出 int 范围的数值(如 "9999999999999999999")会导致解析错误
- 浮点字符串如 "3.14" 不能用 Atoi 转换,应使用 strconv.ParseFloat
- Itoa 输出的是十进制字符串,如需其他进制可用 FormatInt
替代方法参考
对于更复杂的解析需求,可以考虑:
- strconv.ParseInt(s, base, bitSize):可指定进制和位大小
- strconv.FormatInt(i, base):可将整数转为指定进制字符串
例如将数字转为十六进制字符串:hex := strconv.FormatInt(255, 16) → "ff"
基本上就这些。Atoi 和 Itoa 满足大多数日常开发中字符串与整数互转的需求,关键是要记得处理 Atoi 的返回错误,避免程序 panic。理解它们的边界情况能让代码更健壮。










