go语言中常用的功能之三(类型之间的相互转换)

go语言中各种类型之间的相互转换

1. 字符串与整型之间的相互转换

使用 strconv.Atoi 将字符串转成整型

n1 := "15"
n2, _ := strconv.Atoi(n1)
fmt.Printf("n1 type %T value is %s , n2 type %T value is %d\n", n1, n1, n2, n2) //n1 type string value is 15 , n2 type int value is 15

使用 strconv.ParseInt 将字符串转成整型

/*
 第一个参数是值  
 第二个参数是转成什么进制 八进制 是8 十进制是10 十六进制是16 
 第三个参数是 转成的位数 32位或64位整型
*/
n3,_ := strconv.ParseInt(n1,10,64) 
fmt.Printf("n1 type %T value is %d\n",n3,n3) //n1 type int64 value is 15
n4 := 128
n5 := strconv.Itoa(n4)
fmt.Printf("n4 type %T value is %d , n5 type %T value is %s \n", n4, n4, n5, n5) //n4 type int value is 128 , n5 type string value is 128

2. 字符串与小数浮点型之间的相互转换

字符串转浮点数

f1 := "12.34"
f2,_ := strconv.ParseFloat(f1,64)
fmt.Printf("f1 type %T value %.2f \n",f2,f2) //f1 type float64 value 12.34 

浮点数转字符串

f3 := 23.456
f4 := strconv.FormatFloat(f3,'f',2,32) //会四舍五入
fmt.Printf("f4 type %T value %s \n",f4,f4) //f4 type string value 23.46

3. 字符串与字节之间的相互转换

字符串转字节数组

s1 := "hello world"
b1 := []byte(s1)
fmt.Printf("b1 type %T value is %v \n",b1,b1) //b1 type []uint8 value is [104 101 108 108 111 32 119 111 114 108 100]

字节数组转字符串

s2 := string(b1)
fmt.Printf("s2 type %T value is %v \n",s2,s2) // s2 type string value is hello world 

4. 小数与整数之间的相互转换

小数转整数

f1 := 12.85
n1 := int(f1)
fmt.Printf("n1 type %T value %d \n",n1,n1) //不会四舍五入 直接断掉 n1 type int value 12

向上取整

f2 := 12.34
n2 := int(math.Ceil(f2))
fmt.Printf("n2 type %T value %d \n",n2,n2) //向上取整  n2 type int value 13

向下取整

f3 := 12.64
n3 := int(math.Floor(f3))
fmt.Printf("n3 type %T value %d \n",n3,n3) //向下取整 n3 type int value 12

整数转小数

n4 := 12
f4 := float32(n4)
fmt.Printf("f4 type %T value %.2f \n",f4,f4) //f4 type float32 value 12.00 

5. 类型断言

类型断言是一种通用类型 (interface) 的变量转换成指定类型的变量
语法:(interface{})(变量).(变量类型)

var a interface{}
a = "12"
b := "12"
c := a.(string)
//res := strings.Compare(a,b) // canot use 'a' (type interface{}) as type string
res := strings.Compare(c,b)
fmt.Print(res)

类型断言可以用来判断某个结构体是否实现了某个接口

type B interface
var a structTypeName{}
if a.(B),ok ; ok {
   //实现了接口 可以调用接口相关的函数
}

6. 类型函数转换

上面提到过的类型之间的转换

int() uint() // 8 16 32 64位  支持整数 浮点数
float32() // 32 64 位 支持整数 浮点数
rune() //支持字符 字节
string() //字节数组
[]byte() //字符串

猜你喜欢

转载自blog.csdn.net/wujiangwei567/article/details/86576099