golang语言中的整型

发布于 1 年前 作者 phonegap100 219 次浏览 最后一次编辑是 1 年前 来自 分享

更多关于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
}

参考http://docscn.studygolang.com/pkg/fmt/

回到顶部