golang学习笔记: 数据类型的转换

go数据类型的转换

在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明:

B = B(A)

类型 B 的值 = 类型 B(类型 A 的值)

package main
import (
	"fmt"
)
func main(){
	var a float32 = 20.0
	var b int = int(a)
	fmt.Println(b)
}

类型转换只能在定义正确的情况下转换成功

例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将 int16 转换为 int32)。当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。

package main
import (
	"fmt"
)
func main(){
	var a float64 = 20.000000009
	var b float32 = float32(a)
	fmt.Printf("%v",b)
}

结果精度丢失

只有相同底层类型的变量之间可以进行相互转换(如将 int16 类型转换成 int32 类型),不同底层类型的变量相互转换时会引发编译错误

package main
import (
	"fmt"
)
func main(){
	var a bool = true
	var b int = int(a)
	fmt.Printf("%v",b)
}

数据类型转其他

1.使用fmt.Sprintf()

package main
import "fmt"
func main(){
	var new int = 50
	var new1 string = fmt.Sprintf("%d",new)
	fmt.Printf("new1对应的类型是:%T,new1的值是%v\n",new1,new1)
	var new2 float64 = 6.48
	var new3 bool = true
    var new2s = fmt.Sprintf("%f",new2)
	var new3s = fmt.Sprintf("%t",new3)
	fmt.Printf("new2对应的类型是:%T,new2的值是%v\n",new2s,new2s)
	fmt.Printf("new3对应的类型是:%T,new3的值是%v\n",new3s,new3s)
}

2.使用 strconv.FormatInt()与strconv.FormatFloat()

package main
import (
	"fmt"
	"strconv"
)
func main(){
	var first int = 50
	var first1 string = strconv.FormatInt(int64(first),10)
	fmt.Printf("first1对应的类型是:%T,first1的值是%v\n",first1,first1)
	var two float64 = 6.48
	var two1 string = strconv.FormatFloat(two,'f',5,64)
	fmt.Printf("two1对应的类型是:%T,two1的值是%v",two1,two1)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值