1. 简介
strconv是Go语言中提供的一个类型转换工具包,里面包含了将字符串转换成基本数据类型,以及将基本数据类型转换成字符串的方法。这个包通常被用于输入输出操作和在处理命令行参数时将字符串转换成int、float等类型。
2. 基本数据类型转换
2.1 将字符串转换成int类型
通过调用strconv.Atoi(string)
方法将字符串转换成int类型,如果转换失败则会返回错误信息。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("字符串转换成int类型失败")
}
fmt.Printf("%d", num)
}
在代码中,我们将字符串"123"转换成int类型,并将其赋值给变量num,最后通过fmt.Printf("%d", num)
方法输出转换后的结果。正确运行代码会输出数字123。
需要注意的是,对于包含非数字字符的字符串,转换会失败。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123abc"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("字符串转换成int类型失败")
}
fmt.Printf("%d", num)
}
这段代码会输出字符串转换成int类型失败。
2.2 将字符串转换成float类型
通过调用strconv.ParseFloat(string, bitSize)
方法将字符串转换成float类型,其中bitSize代表的是返回的float值的精度,可以传入32或64。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "3.14"
num, err := strconv.ParseFloat(str, 64)
if err != nil {
fmt.Println("字符串转换成float类型失败")
}
fmt.Printf("%f", num)
}
这段代码将字符串"3.14"转换成float类型,并将其赋值给变量num,最后通过fmt.Printf("%f", num)
方法输出转换后的结果。正确运行代码会输出浮点数3.140000。
2.3 将字符串转换成bool类型
通过调用strconv.ParseBool(string)
方法将字符串转换成bool类型。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "true"
b, err := strconv.ParseBool(str)
if err != nil {
fmt.Println("字符串转换成bool类型失败")
}
fmt.Printf("%t", b)
}
这段代码将字符串"true"转换成bool类型,并将其赋值给变量b,最后通过fmt.Printf("%t", b)
方法输出转换后的结果。正确运行代码会输出true。
3. 基本数据类型转换为字符串
3.1 将int类型转换为字符串
通过调用strconv.Itoa(int)
方法将int类型转换成字符串。
package main
import (
"fmt"
"strconv"
)
func main() {
num := 123
str := strconv.Itoa(num)
fmt.Printf("%s", str)
}
这段代码将整数123转换成字符串,并将其赋值给变量str,最后通过fmt.Printf("%s", str)
方法输出转换后的结果。正确运行代码会输出字符串"123"。
3.2 将float类型转换为字符串
通过调用strconv.FormatFloat(float, 'f', -1, 64)
方法将float类型转换成字符串,其中'f'代表输出格式,-1代表使用默认精度,64代表返回的float值的精度。
package main
import (
"fmt"
"strconv"
)
func main() {
num := 3.14
str := strconv.FormatFloat(num, 'f', -1, 64)
fmt.Printf("%s", str)
}
这段代码将3.14转换成字符串,并将其赋值给变量str,最后通过fmt.Printf("%s", str)
方法输出转换后的结果。正确运行代码会输出字符串"3.14"。
3.3 将bool类型转换为字符串
通过调用strconv.FormatBool(bool)
方法将bool类型转换成字符串。
package main
import (
"fmt"
"strconv"
)
func main() {
b := true
str := strconv.FormatBool(b)
fmt.Printf("%s", str)
}
这段代码将布尔值true转换成字符串,并将其赋值给变量str,最后通过fmt.Printf("%s", str)
方法输出转换后的结果。正确运行代码会输出字符串"true"。
4. 字符串转换为其他类型
4.1 将字符串转换为[]byte类型
通过调用[]byte(string)
方法将字符串转换成[]byte类型。
package main
import (
"fmt"
)
func main() {
str := "hello world"
b := []byte(str)
fmt.Printf("%v", b)
}
这段代码将字符串"hello world"转换成[]byte类型,并将其赋值给变量b,最后通过fmt.Printf("%v", b)
方法输出转换后的结果。正确运行代码会输出[104 101 108 108 111 32 119 111 114 108 100]。
4.2 将字符串转换为rune类型
通过for循环遍历字符串并将其转换成rune类型,最后组成一个rune类型的切片。
package main
import (
"fmt"
)
func main() {
str := "你好,世界!"
r := []rune(str)
fmt.Printf("%v", r)
}
这段代码将字符串"你好,世界!"转换成rune类型,并将其赋值给变量r,最后通过fmt.Printf("%v", r)
方法输出转换后的结果。正确运行代码会输出[20320 22909 65292 19990 30028 65281]。
5. 进制转换
5.1 将字符串转换成十进制int类型
通过调用strconv.ParseInt(string, base, bitSize)
方法将字符串转换成十进制int类型,其中base代表进制数,bitSize代表返回的int值的精度,可以传入8、16或10。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "1010"
num, err := strconv.ParseInt(str, 2, 0)
if err != nil {
fmt.Println("字符串转换成int类型失败")
}
fmt.Printf("%d", num)
}
这段代码将二进制字符串"1010"转换成十进制int类型,并将其赋值给变量num,最后通过fmt.Printf("%d", num)
方法输出转换后的结果。正确运行代码会输出数字10。
5.2 将十进制int类型转换成其他进制字符串
通过调用strconv.FormatInt(int64, base)
方法将十进制int类型转换成其他进制字符串,其中base代表进制数。
package main
import (
"fmt"
"strconv"
)
func main() {
num := 10
str := strconv.FormatInt(int64(num), 2)
fmt.Printf("%s", str)
}
这段代码将十进制数字10转换成二进制字符串,并将其赋值给变量str,最后通过fmt.Printf("%s", str)
方法输出转换后的结果。正确运行代码会输出二进制字符串"1010"。
6. 总结
以上就是Go语言中strconv包中的基本用法,通过这些方法可以方便地将字符串转换成基本数据类型,或将基本数据类型转换成字符串。在实际开发中,这个包经常被用于输入输出操作和在处理命令行参数时将字符串转换成int、float等类型。
需要注意的是,转换的过程中可能会出现错误,因此需要使用返回的错误信息进行判断。另外,在进行进制转换时,需要注意进制数和返回值的精度。