Golang语言基础数据类型之整型

简介: 这篇文章详细介绍了Go语言中的整型数据类型,包括各种有符号和无符号整数类型、特殊整型如int、uint、uintptr、rune和byte,以及如何在程序中使用这些类型和它们所占的内存空间大小。

                                              作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

1.整型概述

类型 描述
uint8 无符号 8位整型 (0 到 255)
uint16 无符号 16位整型 (0 到 65535)
uint32 无符号 32位整型 (0 到 4294967295)
uint64 无符号 64位整型 (0 到 18446744073709551615)
int8 有符号 8位整型 (-128 到 127)
int16 有符号 16位整型 (-32768 到 32767)
int32 有符号 32位整型 (-2147483648 到 2147483647)
int64 有符号 64位整型 (-9223372036854775808 到 9223372036854775807)
整数就是用于存放整数值的,比如: 10,-8,9527等等。

整型分为以下三个大类:(对应的取直范围如上表所示)
    有符号整数类型:int8、int16、int32、int64 
    无符号整型六类型:uint8、uint16、uint32、uint64
    其他整数类型: int,uint,rune,byte,uintptr

其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。


温馨提示:
    1.Golang的整数类型,默认声明为int类型;
    2.Golang程序中整型变量在使用时,遵守"保小不保大"的原则,即在保证程序正确运行下,尽量使用占用空间小的数据类型;

2. 特殊整型

类型 描述
uint 32位操作系统上就是uint32,64位操作系统上就是uint64
int 32位操作系统上就是int32,64位操作系统上就是int64
uintptr 无符号整型,用于存放一个指针
rune 等价int32
byte 等价uint8
在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。


温馨提示:
    (1)获取对象的长度的内建len()函数返回的长度可以根据不同平台的字节长度进行变化;
    (2)实际使用中,切片或map的元素数量等都可以用int来表示;
    (3)在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int和 uint。

3.参考案例

package main

import (
    "fmt"
    "unsafe"
)


func main(){
    // 超出了int8存储范围,编译报错: cannot use 222 (untyped int constant) as int8 value in variable declaration (overflows)
    // var n1 int8 = 222
    // fmt.Println(n1)

    // 超出了uint8的存储范围,编译报错: cannot use -22 (untyped int constant) as uint8 value in variable declaration (overflows)
    // var n2 uint8 = -22
    // fmt.Println(n2)

    // Golang的整数类型,默认声明为int类型。
    var n3 = 100
    fmt.Printf("n3的类型是: %T\n",n3)

    // 查看变量占用空间的字节大小。
    fmt.Println("n3占用空间大小(字节)为:",unsafe.Sizeof(n3))

}
目录
相关文章
|
14天前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
47 4
Golang语言之管道channel快速入门篇
|
14天前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
37 4
Golang语言文件操作快速入门篇
|
14天前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
42 3
Golang语言之gRPC程序设计示例
|
14天前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
37 4
|
14天前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
23 4
Golang语言goroutine协程篇
|
14天前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
20 3
Golang语言之Prometheus的日志模块使用案例
|
14天前
|
JSON Go 数据格式
Golang语言结构体链式编程与JSON序列化
这篇文章是关于Go语言中结构体链式编程与JSON序列化的教程,详细介绍了JSON格式的基本概念、结构体的序列化与反序列化、结构体标签的使用以及如何实现链式编程。
21 4
|
14天前
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
27 4
|
14天前
|
Go
Golang语言基础之接口(interface)及类型断言
这篇文章是关于Go语言中接口(interface)及类型断言的详细教程,涵盖了接口的概念、定义、实现、使用注意事项以及类型断言的多种场景和方法。
22 4
|
14天前
|
Go
Golang语言结构体(struct)面向对象编程基础篇
这篇文章是关于Go语言中结构体(struct)面向对象编程的基础教程,详细介绍了面向对象编程在Go语言中的应用、结构体的定义与初始化、方法定义、跨包实例化结构体以及结构体方法和普通函数的区别。
22 4