strconv 包在 Go 语言的字符串和数值类型转换中非常重要,它提供了字符串和基本数值类型之间相互转换的功能。掌握该包的用法可以实现许多有用的转换操作。
本文将详细介绍 strconv 的转换类别、转换语法、错误处理以及一些实用函数的使用。通过丰富的示例,可以让大家全面了解 strconv 包在字符串和数值转换中的强大作用。
1
一、基本数值类型转换
strconv 可以实现数值和字符串两种类型的相互转换:
strconv.Itoa(123) // 整型转字符串 strconv.Atoi("123") // 字符串转整型
支持的类型有 int、float 和 bool 等。
2
二、转换语法
strconv 转换函数命名都遵循”源类型“To”目标类型”的格式:
Itoa - int 到 string
i := 123 s := strconv.Itoa(i) fmt.Printf("%T %v\n", s, s) // string 123
Atoi - string 到 int
s := "456" i, err := strconv.Atoi(s) if err != nil { fmt.Println(err) } else { fmt.Printf("%T %v\n", i, i) // int 456 }
指定进制的字符串转整数
num, err := strconv.ParseInt("1101", 2, 64) if err != nil { fmt.Println("解析错误") } else { fmt.Println(num) } // 输出: // 13
FormatFloat - float 到 string
f := 3.1415926 s := strconv.FormatFloat(f, 'f', 2, 64) fmt.Printf("%T %v\n", s, s) // string 3.14
ParseBool - string 到 bool
s := "true" b, err := strconv.ParseBool(s) if err != nil { fmt.Println(err) } else { fmt.Printf("%T %v", b, b) // bool true }
根据源类型和目标类型可以找出需要的函数。
3
三、错误处理
大多数 strconv 函数在失败时会返回一个错误:
v, err := strconv.Atoi("abc") if err != nil { // 处理错误 }
应对转换失败作出处理。
4
四、Parse 系列函数
Parse 函数会尝试转换整个字符串,并返回未转换的部分:
v, err := strconv.ParseInt("123abc", 10, 64)
这里 v 是 123,err 会指出有余下未转化部分。
5
五、Format 系列函数
Format 函数可以精细控制输出格式:
strconv.FormatFloat(3.14, 'f', 2, 64) // 小数点后2位
支持各种定制如精度、位长等。
6
六、Is 系列函数
Is 函数用来判断一个字符串是否可以转换为指定类型:
strconv.IsDigit('1') // true strconv.IsNumber("123") // true
这些函数非常实用。
7
七、Append 系列函数
可以将转换后的值 append 到现有缓冲区:
buf := []byte("Prefix:") strconv.AppendInt(buf, 123, 10)
避免多次拼接字符串。
8
八、Quote 与 Unquote
这两个函数实现了 Go 字符串语法与 strconv 字符串转换之间的转化:
strconv.Unquote(`"Hello"`) // Hello
9
总结
strconv 包为我们实现了 Go 语言中非常常见的字符串和数值互转功能,是不可或缺的力量。充分利用这个包可以简化很多转换操作。