Golang类型转换及移位运算

类型转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
类型转换强化
整型和浮点型可以直接强制转换
字符串和数值的转换用strconv.ParseInt和strconv.ParseFloat
*/
func main024() {
var a int = 123
var b float64 = 456.78

//将整型转换为浮点型
aFloat := float64(a)
//%T类型占位符,%v是值占位符
fmt.Printf("aFloat的类型是%T,值是%v\n",aFloat,aFloat)

//浮点型转整型,小数部分扔掉
//bInt := int32(b)
bInt := int(b)
fmt.Printf("bInt的类型是%T,值是%v\n",bInt,bInt)

//字符串转整型
resultInt, _ := strconv.ParseInt("123", 0, 64)
fmt.Printf("resultInt的类型是%T,值是%v\n",resultInt,resultInt)

//字符串转浮点型
resultFloat, _ := strconv.ParseFloat("123.45", 64)
fmt.Printf("resultFloat的类型是%T,值是%v\n",resultFloat,resultFloat)
}

/*移位运算强化*/
func main() {
//10111
var a uint8 = 23
fmt.Println(a>>3)//2

//左移
fmt.Println(a<<3)//184
//继续移动,从左侧溢出,当前无符号,最高位是数据位而非符号位
fmt.Println(a<<5)//224


//定义有符号8位整型
var b int8 = 23

//10111000,最高位为1,为负数,为补码,减一取反得其原码(原码到补码取反加一的逆向)
fmt.Println(b<<3)//-72

}