一、基本介绍
在程序开发中,我们经常需要将基本数据类型转成string 类型。或者将string类型转成基本数据类型。
二、基本类型转string类型的方式
1、fmt.Sprintf
fmt.Sprintf(“%参数”, 表达式) 参数需要和表达式的数据类型相匹配
fmt.Sprintf().. 会返回转换后的字符串
使用案例:
package main
import (
"fmt"
"strconv"
)
func main() {
//定义一些基本数据类型
var n1 int64 = 1234565
var n2 float64 = 123.4098
var b bool = true
var char1 byte = 'a'
//开始转
str1 := fmt.Sprintf("%d 转换另外一个 %f", n1, n2)
str2 := fmt.Sprintf("%f", n2)
str3 := fmt.Sprintf("%t", b)
str4 := fmt.Sprintf("%c", char1)
fmt.Printf("str1 = %q str2 = %q str3 =%q str4 =%q\n",
str1, str2, str3, str4)
}
2、使用strconv 包的函数将基本数据类型转string
strconv包的类型转换函数如下:(复制源码)
使用案例:
package main
import (
"fmt"
"strconv"
)
func main() {
//第二种方式
var num1 int64 = 1234565
//var num2 float64 = 123.4098
str5 := strconv.FormatInt(num1, 10)
fmt.Printf("str5=%s\n", str5)
}
三、string类型转基本数据类型——strconv包
1、使用 strconv包的函数
2、快速入门案例
package main
import (
"fmt"
"strconv"
)
func main() {
//声明几个字符串
str1 := "123.987" // float64
str2 := "89123" // -> int64
str3 := "true" // -> bool
//开始转换
num1, _ := strconv.ParseFloat(str1, 64)
num2, _ := strconv.ParseInt(str2, 10, 64)
b1, _ := strconv.ParseBool(str3)
fmt.Printf("num1 = %T val=%v\n", num1, num1)
fmt.Printf("num2 = %T val=%v\n", num2, num2)
fmt.Printf("b1 = %T val=%v\n", b1, b1)
//其它说明
//1 如果希望将str 转成 int32 int 16 等,可以在转成 int64 ,在进行换行。
//2 如果希望将str 转成 float32 ,可以在转成 float64 ,在进行换行。
//3. 注意,如何判断转换成功!
str4 := "hello" //=> int64
num3, err := strconv.ParseInt(str4, 10, 64)
if err!= nil { // 说明转换没有成功
fmt.Printf("convert err = %v\n", err)
//这里就可以加入自己处理逻辑
} else {
fmt.Printf("num3 = %T val=%v\n", num3, num3)
}
}
3、使用细节和注意事项
在将String 类型转成 基本数据类型时,要确保String类型能够转成有效的数据,比如 我们可以把 “123” , 转成一个整数,但是不能把 “hello” 转成一个整数,如果这样做,Golang直接将其转成 0。
四、string和byte的切片转换
1、string 转为[]byte
var str string = "test"
var data []byte = []byte(str)
2、byte转为string
var data [10]byte
byte[0] = 'T'
byte[1] = 'E'
var str string = string(data[:])