今天第四篇文章讲Go语言中的基本数据类型之间的转换,以及基本数据类型和string之间的转换。让我们直接进入正题。
(一)基本数据类型之间的转换
1.基本数据类型的默认值: 在Go语言中数据类型都有一个默认值,当没有进行赋值时,就会保留默认值(默认值又叫零值)。
2.转换:Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)。
3.语法:
表达式T(v)将值v转换为类型T
T : 就是数据类型
v : 就是需要转换的变量
4.案例展示:
package main
import "fmt"
func main(){
//进行类型转换:
var n1 int = 100
//var n2 float32 = n1 在这里自动转换不好使,比如显式转换
fmt.Println(n1)
//fmt.Println(n2)
var n2 float32 = float32(n1)
fmt.Println(n2)
//注意:n1的类型其实还是int类型,只是将n1的值100转为了float32而已,n1还是int的类型
fmt.Printf("%T",n1) //int
fmt.Println()
//将int64转为int8的时候,编译不会出错的,但是会数据的溢出
var n4 int8 = int8(n3)
fmt.Println(n4)//56
var n5 int32 = 12
var n6 int64 = int64(n5) + 30 //一定要匹配=左右的数据类型
fmt.Println(n5)
fmt.Println(n6)
var n7 int64 = 12
var n8 int8 = int8(n7) + 127 //编译通过,但是结果可能会溢出
//var n9 int8 = int8(n7) + 128 //编译不会通过
fmt.Println(n8)
//fmt.Println(n9)
}
(二)基本数据类型与string之间的转换
1.基本数据类型和string的转换介绍:
在程序开发中,我们经常需要将基本数据类型转成string类型。或者将string类型转成基本数据类型。
2.基本类型转string类型的方法
1)方式1:fmt.Sprintf("%参数",表达式) ---》 重点练习这个,推荐方式
2)方式2:使用strconv包的函数
3).实际演示:
方式1: 在方式1中的表达方式可以在Go语言的API中找到,如下图所示:
方式2:
var s1 string = strconv.FormatInt(int64(n1),10)
//参数:第一个参数必须转为int64类型 ,第二个参数指定字面值的进制形式为十进制
var s2 string = strconv.FormatFloat(n2,'f',9,64)
//第二个参数:'f'(-ddd.dddd) 第三个参数:9 保留小数点后面9位 第四个参数:表示这个小数是float64类型
3.string类型转基本类型
1)方式:使用strconv包的函数
2)测试:
a.
//string-->bool
var s1 string = "true"
var b bool
//ParseBool这个函数的返回值有两个:(value bool, err error)
//value就是我们得到的布尔类型的数据,err出现的错误
//我们只关注得到的布尔类型的数据,err可以用_直接忽略
b , _ = strconv.ParseBool(s1)
fmt.Printf("b的类型是:%T,b=%v \n",b,b)
b.
//string---》int64
var s2 string = "19"
var num1 int64
num1,_ = strconv.ParseInt(s2,10,64)
fmt.Printf("num1的类型是:%T,num1=%v \n",num1,num1)
c.
//string-->float32/float64
var s3 string = "3.14"
var f1 float64
f1,_ = strconv.ParseFloat(s3,64)
fmt.Printf("f1的类型是:%T,f1=%v \n",f1,f1)
//注意:string向基本数据类型转换的时候,一定要确保string类型能够转成有效的数据类型,否则最后得到的结果就是按照对应类型的默认值输出
var s4 string = "golang"
var b1 bool
b1 , _ = strconv.ParseBool(s4)
fmt.Printf("b1的类型是:%T,b1=%v \n",b1,b1)
var s5 string = "golang"
var num2 int64
num2,_ = strconv.ParseInt(s5,10,64)
fmt.Printf("num2的类型是:%T,num2=%v \n",num2,num2)
}
在进行类型转换时,需要注意以下几点:
- 转换函数返回的结果可能会包含转换失败的信息,需要进行错误处理。
- 在将字符串转换为整数或浮点数时,需要考虑字符串是否符合相应类型的格式要求。
- 在将浮点数转换为字符串时,可以使用
FormatFloat函数指定格式化的方式,其中'f'表示十进制格式,-1表示使用默认的精度。