Go语言数据类型转换需要注意只能显示转换。直接上代码吧
package main
import (
"fmt"
"strconv"
"unsafe"
_ "unsafe" //注掉一个包
)
func main() {
//Golang中数据类型转换只能用显示转换T(v)
var number int32 = 100
var num_1 float64 = float64(number)
var num_2 int8 = int8(number)
var num_3 int64 = int64(number)
fmt.Printf("num_1m=%v,num_2=%v,num_3=%v\n", num_1, num_2, num_3)
//基本数据类型转成string类型
var num_4 int = 99
var num_5 float64 = 23.456
var b bool = true
var mychar byte = 'h'
var str string
//使用第一种方式转换 fmt.Sprintf()方法,推荐使用这种方式
str = fmt.Sprintf("%d", num_4)
fmt.Printf("str type %T, str=%q\n", str, str)
str = fmt.Sprintf("%f", num_5)
fmt.Printf("str type %T, str=%q\n", str, str)
str = fmt.Sprintf("%t", b)
fmt.Printf("str type %T, str=%q\n", str, str)
str = fmt.Sprintf("%c", mychar)
fmt.Printf("str type %T, str=%q\n", str, str)
//使用第二种方式转换 strconv函数
str = strconv.FormatInt(int64(num_4), 10) //第二个参数是n进制
fmt.Printf("str type %T, str=%q\n", str, str)
str = strconv.FormatFloat(num_5, 'f', 8, 64) //参考官方中文文档,第3个参数表示精度,第4个参数是64位
fmt.Printf("str type %T, str=%q\n", str, str)
str = strconv.FormatBool(b)
fmt.Printf("str type %T, str=%q\n", str, str)
str = strconv.Itoa(num_4)
fmt.Printf("str type %T, str=%q\n", str, str)
//string类型转换成基本类型
var str4 string = "true"
var boo bool
boo, _ = strconv.ParseBool(str4) //ParseBool两个返回值,我们只要第一个返回值bool
fmt.Printf("boo type %T, boo=%v\n", boo, boo)
var str5 string = "9.99"
var n4 float64
n4, _ = strconv.ParseFloat(str5, 64)
fmt.Printf("n4 type %T, n4=%v\n", n4, n4)
var str6 string = "11111110"
var n5 int64
var n6 int8
n5, _ = strconv.ParseInt(str6, 10, 8) //返回值是int64的,第二个参数是按十进制输出,第三个参数是8位,也可以是16,32,64
n6 = int8(n5) //将int64转换成int8
fmt.Printf("n5 type %T, n5=%v;n6 type %T, n6=%v\n", n5, n5, n6, n6)
//无符号16位转换成无符号8位
var speed uint16 = 3000
var spd_high, spd_low uint8
spd_high = uint8(speed >> 8)
spd_low = uint8(speed & 0xff)
fmt.Printf("spd_high =%#x,spd_low=%#x\n", spd_high, spd_low)
}