内置类型转换函数
标准库内置类型转换函数模块: strconv
- strconv.Atoi 字符串转10进制数字
- strconv.Itoa 10进制数字转字符串
- strconv.FormatBool 格式化布尔值(转字符串)
- strconv.FormatFloat 格式化浮点数(转字符串)
- strconv.FormatInt 格式化整数(转字符串)
- strconv.FormatUint格式化无符号整数(转字符串)
- strconv.ParseBool 解析字符串为布尔值
- strconv.ParseFloat 字符串转浮点数(指定进制)
- strconv.ParseInt 字符串转数字(指定进制)
- strconv.ParseUInt 字符串转无符号数(指定进制)
go
package main
import (
"fmt"
"strconv"
)
func main() {
num, err := strconv.ParseInt("123", 10, 64)
if err != nil {
fmt.Println("[Error]failed to parse number", err)
}
fmt.Println("num = ", num)
}[问题]
虽然可以转换类型,但是多数API出错时都会返回一个 error,
需要手动处理 error 而且并没有直接转换时间的 time.Duration 的接口
使用 cast
cast 可以更方便的转换类型
- 文档: https://pkg.go.dev/github.com/spf13/cast
- 安装:
go get -u github.com/spf13/cast
go
package main
import (
"fmt"
"github.com/spf13/cast"
)
func main() {
// 1.代码更简洁直观
num := cast.ToInt("123")
fmt.Println("num = ", num) // Output: num = 123
// 2.即使无法解析也会使用默认值
num2 := cast.ToInt("123a")
fmt.Println("num2 = ", num2) // Output: num = 123
}