如何在Golang中使用strconv进行类型转换_Golang strconv类型转换示例

strconv包专用于字符串与基础类型(int/float/bool)的安全高效转换,不支持结构体;字符串转数字需检查error,数字转字符串有Itoa等便捷函数,bool仅识别"true"/"false"及"1"/"0"。

在 Go 语言中,strconv 包是标准库中处理字符串与基础类型(如 int、float、bool)之间转换的核心工具,安全、高效且无需外部依赖。它不支持结构体或自定义类型,专注做好“字符串 ↔ 基本类型”这件事。

字符串转数字:ParseInt、ParseFloat、ParseUint

转换失败时返回 error,必须检查——这是 Go 的惯用做法,也是避免 panic 的关键。

  • strconv.ParseInt("123", 10, 64):将十进制字符串转为 int64,第二个参数是进制(常用 10),第三个是位宽(32/64)
  • strconv.ParseFloat("3.1415", 64):转为 float64(64 是精度,固定写 64;32 也可,但注意精度损失)
  • strconv.ParseUint("255", 10, 64):用于无符号整数,适合处理非负大数(如时间戳、ID)

⚠️ 注意:"123abc" 这类含非法字符的字符串会返回 error;空字符串、仅空格也会失败。

数字转字符串:Itoa、FormatInt、FormatFloat

最常用的是 strconv.Itoa(n),它是 FormatInt(int64(n), 10) 的快捷写法,专用于 int → string(十进制)。

  • strconv.FormatInt(int64(255), 16)"ff"(十六进制小写)
  • strconv.FormatFloat(3.14159, 'f', 2, 64)"3.14"('f' 表示定点格式,2 是小数位数)
  • strconv.FormatBool(true)"true",简洁直接

字符串与布尔值互转

Go 对 bool 字符串约定明确:"true"/"false"(全小写)可被 strconv.ParseBool 正确识别;"1""0" 也支持,但 "yes""on" 不行。

  • strconv.ParseBool("true")true, nil
  • strconv.ParseBool("1")true, nil
  • strconv.FormatBool(false)"false"

安全转换封装建议

实际项目中常需容错(如默认值兜底),可简单封装:

  • if n, err := strconv.Atoi(s); err == nil { ... } 替代裸调用
  • 对可能为空或异常的输入,先 strings.TrimSpace 再转换
  • 避免用 strconv.Itoa 转非 int 类型——它只接受 int,传 int32/int64 会编译报错,记得显式转换:strconv.Itoa(int(x))

基本上就这些。用熟了会发现,strconv 没有魔法,但每一步都清晰可控。