1. 介绍
在程序开发中,我们经常将基本数据类型转成string,或者将string转成基本数据类型
2. 基本数据类型转string类型
1)fmt.Sprintf("%参数",表达式)
函数的介绍:
func Sprintf
func Sprintf(format string, a ...interface{}) string
Sprintf 根据format参数生成格式化的字符串并返回该字符串
参数需要和表达式的数据类型相匹配
fmt.Sprintf()... 会返回转换后的字符串
2)方式2: 使用strconv包的函数
package main
import (
"fmt"
_ "unsafe"
"strconv"
)
func main() {
// 1. 基本数据类型转string
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
// var mychar byte = 'h'
var str string // 空的str
// 方式1: fmt.Sprintf
str = fmt.Sprintf("%d",num1)
fmt.Printf("str type %T str=%v\n",str,str)
str = fmt.Sprintf("%f",num2)
fmt.Printf("str type %T str=%v\n",str,str)
str = fmt.Sprintf("%t",b)
fmt.Printf("str type %T str=%q\n",str,str)
// 方式2: 使用 stronv包的函数
var num3 int = 99
var num4 float64 = 23.456
var b2 bool = true
str = strconv.FormatInt(int64(num3),10)
fmt.Printf("str type %T str=%q\n",str,str)
str = strconv.FormatFloat(num4,'f',10,64)
fmt.Printf("str type %T str=%q\n",str,str)
str = strconv.FormatBool(b2)
fmt.Printf("str type %T str=%q\n",str,str)
}
3. string类型转基本数据类型
1)使用strconv包的函数
package main
import (
"fmt"
"strconv"
)
func main() {
var str string = "true"
var b bool
// b, _ = strconv.ParseBool(str)
// 说明
// 1. strconv.ParseBool(str) 函数会返回两个值(value bool,err error)
// 2. 因为我只想获取到 value bool,不想获取 err 所以使用 _ 忽略 error
b , _ = strconv.ParseBool(str)
fmt.Printf("b type %T b=%v",b,b)
var str2 string = "123450"
var n1 int64
n1, _ = strconv.ParseInt(str2,10,0)
var n2 int = int(n1)
fmt.Printf("n1 type %T n1=%v\n",n1,n1)
fmt.Printf("n1 type %T n1=%v\n",n2,n2)
var str3 string = "123.456"
var f1 float64
f1, _ = strconv.ParseFloat(str3,64)
fmt.Printf("f1 type %T f1=%v\n",f1,f1)
// 说明: 返回的是int64或者float64,所以希望得到int32,float32需要进行一次显示转换
}
说明: 返回的是int64或者float64,所以希望得到int32,float32需要进行一次显示转换
注意事项:
将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如我们可以把"123" 转成一个整数,但是不能把"hello" 转成一个整数,如果这样做,Golang不会报错,而是将其转为0,其它数据类型也是一样的道理,float --> 0 bool --> false 即默认值