strconv包是Go中安全高效处理字符串与基础类型双向转换的标准工具,支持Parse/Format系列函数及Bytes变体,需检查错误且不支持自定义类型。
Go 语言中,strconv 包是处理字符串与基础类型(如 int、float、bool)之间转换的标准工具,安全、高效、无依赖。它不支持自定义类型或结构体,但对数字和布尔值的双向转换覆盖全面。
所有 Parse* 函数都返回两个值:转换后的值和可能的错误。务必检查错误,避免静默失败。
strconv.ParseInt(s, base, bitSize),例如 ParseInt("123", 10, 64) 得到 int64(123);strconv.Atoi(s
) 是常用快捷版(等价于 ParseInt(s, 10, 0),自动适配平台 int 大小)。strconv.ParseFloat(s, bitSize),如 ParseFloat("3.1415", 64) 返回 float64;注意科学计数法("1e2")也支持。strconv.ParseBool(s),接受 "true"/"false"(不区分大小写),也支持 "1"/"0" 和 "t"/"f" 等简写。这些函数不报错,直接返回字符串,适合已知数据合法的场景。
strconv.Itoa(i)(等价于 FormatInt(int64(i), 10));若需指定进制,用 strconv.FormatInt(i, 16)(转十六进制)或 FormatUint(u, 2)(转二进制)。strconv.FormatFloat(f, fmt, prec, bitSize),例如 FormatFloat(3.14159, 'g', 4, 64) 输出 "3.142";'f' 表示定点格式,'e' 表示科学计数法。strconv.FormatBool(b),返回 "true" 或 "false"(全小写)。多数 Parse* 和 Format* 函数都有对应 ...Bytes 版本,如 ParseInt([]byte("123"), 10, 64) 和 AppendInt(dst, i, 10)。后者可复用底层数组,减少内存分配,适合高频转换场景。
转换失败时错误信息明确,但需主动处理。例如 Atoi("abc") 返回 0 和 "strconv.Atoi: parsing \"abc\": invalid syntax";空字符串、前导空格(除非用 strings.TrimSpace 预处理)、溢出(如 ParseInt("99999999999999999999", 10, 64))都会报错。不要忽略 err,也不要依赖返回零值做逻辑判断。