Go语言学习笔记-05数值类型
整形
平台无关整形:在不同cpu架构或操作系统下长度是一致的
1.有符号整形
int8,int16,int32,int64
2.无符号整形
uint8,uint16,uint32,uint64
平台有关整形:在不同cpu架构或操作系统下长度是不一致的
1.有符号整形:int
2.无符号整形:uint
3.无符号整形:uintptr,大到足以存储任意一个指针的值
可以使用unsafe
包下的SizeOf函数获取数据类型的长度
ch05/main.go
package main
import (
"fmt"
"unsafe"
)
func main() {
a, b := int(5), uint(5)
var c uintptr = 0x123456
fmt.Println("int的长度为", unsafe.Sizeof(a))
fmt.Println("uint的长度为", unsafe.Sizeof(b))
fmt.Println("uintptr的长度为", unsafe.Sizeof(c))
}
输出
int的长度为 8
uint的长度为 8
uintptr的长度为 8
字面值
十进制:10
八进制:以0
开头,010
十六进制:以0x
或0X
开头,0x10,0X10
Go 1.13版本增加以下表示:
二进制:以0b
或0B
开头,0b10,0B10
八进制:以0o
或0O
开头,0o10,0O10
增加分隔符_
将数字分组,或者分割前缀
十进制:1_0_0
二进制:0b_1000_1000
八进制:0o_100
十六进制:0x_01_01
ch05/numberliteral/main.go
package main
import (
"fmt"
)
func main() {
d1 := 10 // 十进制
d2 := 1_0 // 十进制
d3 := 0010 // 八进制,表示十进制的8
d4 := 00_10 // 八进制,表示十进制的8
d5 := 0x10 // 十六进制,表示十进制的16
d6 := 0x_10 // 十六进制,表示十进制的16
d7 := 0b0010 // 二进制,表示十进制的2
d8 := 0b_0010 // 二进制,表示十进制的2
fmt.Println("d1 10的值为", d1)
fmt.Println("d2 1_0的十进制值为", d2)
fmt.Println("d3 0010的十进制值为", d3)
fmt.Println("d4 00_10的十进制值为", d4)
fmt.Println("d5 0x10的十进制值为", d5)
fmt.Println("d6 0x_10的十进制值为", d6)
fmt.Println("d7 0b0010的十进制值为", d7)
fmt.Println("d8 0b_0010的十进制值为", d8)
}
输出
d1 10的值为 10
d2 1_0的十进制值为 10
d3 0010的十进制值为 8
d4 00_10的十进制值为 8
d5 0x10的十进制值为 16
d6 0x_10的十进制值为 16
d7 0b0010的十进制值为 2
d8 0b_0010的十进制值为 2
格式化输出
占位符 | 格式 |
---|---|
%b | 二进制格式 |
%d | 十进制格式 |
%o | 八进制格式 |
%O | 八进制格式,0o开头 |
%x | 十六进制格式,小写 |
%X | 十六进制格式,大写 |
ch05/integerformat/main.go
package main
import "fmt"
func main() {
a := 255
fmt.Printf("255的二进制表示:%b\n", a) // 11111111
fmt.Printf("255的十进制表示:%d\n", a) // 255
fmt.Printf("255的八进制表示:%o\n", a) // 377
fmt.Printf("255的八进制表示:%O\n", a) // 0o377
fmt.Printf("255的十六进制表示:%x\n", a) // ff
fmt.Printf("255的十六进制表示:%X\n", a) // FF
}
输出
255的二进制表示:11111111
255的十进制表示:255
255的八进制表示:377
255的八进制表示:0o377
255的十六进制表示:ff
255的十六进制表示:FF
浮点数
32位浮点数:float32
64位浮点数:float64
字面值
使用十进制表示浮点值:1.68
整数部分为0可省略:.68
小数部分为0可省略:68.0
科学计数法
十进制:e/E表示底数为10的幂运算,加号可省略
1.68e+2 表示 1.68*10^2 = 168
十六进制:p/P表示底数为2的幂运算,整数和小数以十六进制表示,指数以十进制表示,加号可省略
0x1.p+2 表示 1.0 * 2^2 = 4.0
0x1.ap0 表示 1.625 * 2^0 = 1.625
格式化输出
占位符 | 格式 |
---|---|
%f | 以浮点数原值格式输出,%.2f保留两位小数 |
%e | 十进制的科学计数法 |
%x | 十六进制的科学计数法 |
ch05/float/main.go
package main
import "fmt"
func main() {
a := float32(10.0)
b := 10.0
c := .68
d := 68.
e := 10.e2
f := 0x1.ap+0
g := 1.625
fmt.Printf("a的值为%f\n", a)
fmt.Printf("b的值为%f\n", b)
fmt.Printf("c的值为%f\n", c)
fmt.Printf("d的值为%f\n", d)
fmt.Printf("e的值为%f\n", e)
fmt.Printf("f的值为%f\n", f)
fmt.Printf("f的值为%.2f\n", f)
fmt.Printf(".68的十进制科学计数法形式为%e\n", c)
fmt.Printf("1.625的十六进制科学计数法形式为%x\n", g)
}
输出
a的值为10.000000
b的值为10.000000
c的值为0.680000
d的值为68.000000
e的值为1000.000000
f的值为1.625000
f的值为1.62
.68的十进制科学计数法形式为6.800000e-01
1.625的十六进制科学计数法形式为0x1.ap+00
笔记地址
github:https://github.com/xianyuyixi...
交流学习
微信号:xianyuyixia
微信公众号:闲渔一下