Go语言学习笔记-05数值类型

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的长度为 8uint的长度为 8uintptr的长度为 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

```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的值为 10d2 1_0的十进制值为 10d3 0010的十进制值为 8d4 00_10的十进制值为 8d5 0x10的十进制值为 16d6 0x_10的十进制值为 16d7 0b0010的十进制值为 2d8 0b_0010的十进制值为 2```

### 格式化输出

| 占位符 | 格式 |
| ------ | ------------------ |
| %b     | 二进制格式 |
| %d     | 十进制格式 |
| %o     | 八进制格式 |
| %O     | 八进制格式,0o开头 |
| %x     | 十六进制格式,小写 |
| %X     | 十六进制格式,大写 |

ch05/integerformat/main.go

```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:github.com/xianyuyixia/gotrip

交流学习

微信号:xianyuyixia

wx_qrcode_258.jpg

微信公众号:闲渔一下

wx_platform.jpg

go
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!