golang语言中的整型
更多关于golang语言中的整型的视频教程访问:https://www.itying.com/category-90-b0.html
1、Golang数据类型介绍
Go语言中数据类型分为:基本数据类型和复合数据类型
基本数据类型有:
整型、浮点型、布尔型、字符串
复合数据类型有:
数组、切片、结构体、函数、map、通道(channel)、接口等。
2、整型
整型分为以下两个大类:
有符号整形按长度分为:int8、int16、int32、int64
对应的无符号整型:uint8、uint16、uint32、uint64
类型 | 范围 | 占用空间 | 有无符号 |
---|---|---|---|
int8 | (-128 到 127) -2^7到2^7-1 | 1个字节 | 有 |
int16 | (-32768 到 32767) -2^15到2^15-1 | 2个字节 | 有 |
int32 | (-2147483648 到 2147483647) -2^31到2^31-1 | 4个字节 | 有 |
int64 | (-9223372036854775808 到 9223372036854775807) -2^63到2^63-1 | 8个字节 | 有 |
uint8 | (0 到 255) 0到2^8-1 | 1个字节 | 无 |
uint16 | (0 到 65535) 0到2^16-1 | 2个字节 | 无 |
uint32 | (0 到 4294967295) 0到2^32-1 | 4个字节 | 无 |
uint64 | (0 到 18446744073709551615) 0到2^64-1 | 8个字节 | 无 |
关于字节:
字节也叫Byte,是计算机数据的基本存储单位。 8bit(位)=1Byte(字节) 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 。在电脑里一个中文字是占两个字节的。
特殊整型
类型 | 描述 |
---|---|
uint | 32位操作系统上就是uint32,64位操作系统上就是uint64 |
int | 32位操作系统上就是int32,64位操作系统上就是int64 |
uintptr | 无符号整型,用于存放一个指针 |
注意: 在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。
注意事项**:实际项目中整数类型、切片、 map 的元素数量等都可以用int来表示。**在涉及到二进制传输、为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int和uint。
package main import ( "fmt" ) func main() { var num int64 num = 123 fmt.Printf("值:%v 类型%T", num, num) }
unsafeSizeof
unsafe.Sizeof(n1) 是unsafe包的一个函数,可以返回n1变量占用的字节数
package main
import (
"fmt"
"unsafe"
)
func main() {
var a int8 = 120
fmt.Printf("%T\n", a)
fmt.Println(unsafe.Sizeof(a))
}
int不同长度直接的转换
package main
import (
"fmt"
)
func main() {
var num1 int8
num1 = 127
num2 := int32(num1)
fmt.Printf("值:%v 类型%T", num2, num2) //值:127 类型int32
}
数字字面量语法(Number literals syntax)(了解)
Go1.13版本之后引入了数字字面量语法,这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字,例如:
v := 0b00101101, 代表二进制的 101101,相当于十进制的 45。 v := 0o377,代表八进制的 377,相当于十进制的 255。 v := 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25。 而且还允许我们用 _ 来分隔数字,比如说:
v := 123_456 等于 123456。
我们可以借助fmt函数来将一个整数以不同进制形式展示。
package main
import "fmt"
func main(){
// 十进制
var a int
a = 10
fmt.Printf("%d \n", a) // 10
fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制
// 八进制 以0开头
var b int
b = 077
fmt.Printf("%o \n", b) // 77
// 十六进制 以0x开头
var c int
c = 0xff
fmt.Printf("%x \n", c) // ff
fmt.Printf("%X \n", c) // FF
fmt.Printf("%d \n", c) // 255
}