Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。
strconv包提供了简单数据类型之间的类型转换功能。
以下是常用的一些转换函数:
将 int 类型转成 string 类型: (Itoa)
num := 3311
str := strconv.Itoa(num)
fmt.Printf("--> 类型: %T, 值: %v \n", num, num)
fmt.Printf("--> 类型: %T, 值: %v \n", str, str)
将 int64 类型转换成 string 类型: (FormatInt)
func FormatInt(i int64, base int) string
v := int64(-4235)
s10 := strconv.FormatInt(v, 10)
fmt.Printf("--> %T, %v\n", s10, s10)
将 string 类型转成 int 类型 (Atoi)
Atoi: 将 string 类型转成 int 类型
fmt.Println("---- Atoi -----")
num2 := "1012"
if s, err := strconv.Atoi(num2); err == nil {
fmt.Printf("--> 类型: %T, 值: %v \n", s, s)
}
将 string 类型转换到 int64 类型:
将 string 类型转换到 int64 类型
v32 := "-354634382"
if s, err := strconv.ParseInt(v32, 10, 32); err == nil {
fmt.Printf("%T, %v\n", s, s)
}
v64 := "-3546343826724305832"
if s, err := strconv.ParseInt(v64, 10, 64); err == nil {
fmt.Printf("%T, %v\n", s, s)
}
代码实例
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println("--> Hello, World!");
tips := "这里是my类型转换?"
fmt.Println("--> tips: " + tips);
fmt.Println("---- Itoa -----")
num := 3311
str := strconv.Itoa(num)
fmt.Printf("--> 类型: %T, 值: %v \n", num, num)
fmt.Printf("--> 类型: %T, 值: %v \n", str, str)
fmt.Println("---- Atoi -----")
num2 := "1012"
if s, err := strconv.Atoi(num2); err == nil {
fmt.Printf("--> 类型: %T, 值: %v \n", s, s)
}
fmt.Println("---- ParseFloat -----")
v3 := "3.1415926535"
if s, err := strconv.ParseFloat(v3, 32); err == nil {
fmt.Printf("--> 类型: %T, 值: %v \n", s, s)
}
if s, err := strconv.ParseFloat(v3, 64); err == nil {
fmt.Printf("--> 类型: %T, 值: %v \n", s, s)
}
fmt.Println("---- Quote -----")
s := strconv.Quote(`"Fran & \n \t Freddie's Diner ☺"`)
fmt.Println(s)
fmt.Println(strconv.QuoteToASCII("to quote Shakespeare 引用莎士比亚的话"))
fmt.Println("---- Unquote -----")
s1 := "`Hello 世界!`"
s2 := `"Hello\t\u4e16\u754c\uff01"`
s3 := `"to quote Shakespeare \u5f15\u7528\u838e\u58eb\u6bd4\u4e9a\u7684\u8bdd"`
fmt.Println(strconv.Unquote(s1))
fmt.Println(strconv.Unquote(s2))
fmt.Println(strconv.Unquote(s3))
}
运行代码
$ go run ~/development/golang/go-string-strconv.go
代码输出结果如下:
--> Hello, World!
--> tips: 这里是my类型转换?
---- Itoa -----
--> 类型: int, 值: 3311
--> 类型: string, 值: 3311
---- Atoi -----
--> 类型: int, 值: 1012
---- ParseFloat -----
--> 类型: float64, 值: 3.1415927410125732
--> 类型: float64, 值: 3.1415926535
---- Quote -----
"\"Fran & \\n \\t Freddie's Diner\t☺\""
"to quote Shakespeare \u5f15\u7528\u838e\u58eb\u6bd4\u4e9a\u7684\u8bdd"
---- Unquote -----
Hello 世界! <nil>
Hello 世界! <nil>
to quote Shakespeare 引用莎士比亚的话 <nil>
Reference
https://golang.google.cn/pkg/strconv/
https://www.cnblogs.com/golove/p/3262925.html
https://www.cnblogs.com/f-ck-need-u/p/9863915.html
[END]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)