走入Golang(4) | 青训营

83 阅读3分钟

今天第四篇文章讲Go语言中的基本数据类型之间的转换,以及基本数据类型和string之间的转换。让我们直接进入正题。

(一)基本数据类型之间的转换

1.基本数据类型的默认值: 在Go语言中数据类型都有一个默认值,当没有进行赋值时,就会保留默认值(默认值又叫零值)。

image.png

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中找到,如下图所示:

image.png

方式2: 

image.png  

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包的函数

image.png

2)测试:

image.png

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表示使用默认的精度。