一文吃透Go语言整型用法 新手必备指南!

简介: 一文吃透Go语言整型用法 新手必备指南!

在编程语言中,整型是最基础和常用的数据类型之一,用于表示整数值。Go 语言中提供了丰富的整型类型用来表示不同大小和有无符号的整数。正确选择和使用合适的整型类型是 Go 语言新手必须掌握的基础知识。

本文将详细介绍 Go 语言中的整型类型定义、初始化、使用方式等内容,并辅以完整的代码示例加深理解。让我们从整型的分类和字节大小开始了解 Go 语言的整型吧!

1

 

一、整型分类

Go 语言中的整型可以分类为:

  1. 带符号和无符号整数
  2. 带符号和无符号整数根据数据位数分为 int8、int16、int32、int64 等
  3. 还有一种特殊的 rune 类型,用于表示 Unicode 码点

2

 

二、带符号和无符号整型

基础的整型类型分为两大类:

  1. 符号的整型:可以表示正数、负数和 0
  2. 无符号整型:只能表示大于或等于 0 的整数

例如:

var a int8 = -128 // 带符号整型
var b uint8 = 255 // 无符号整型

3

 

三、整型位数

Go 语言中整型支持不同的位数,主要有 int8、int16、int32、int64 这些关键字,它们能表示的整数范围如下:

  • int8: -128 ~ 127
  • int16: -32768 ~ 32767
  • int32: -2147483648 ~ 2147483647
  • int64: -9223372036854775808 ~ 9223372036854775807

选择不同位数的整型时,应根据实际值的大小来决定,不要随意使用 int 或 int64。

4

 

四、整型的默认类型

Go 语言中如果不指定类型,默认为 int 类型,在 32 位系统上 int 就是 int32,在 64 位系统上 int 就是 int64。

例如:

var a int // int32或int64
var b uint // uint32或uint64

所以声明变量时,最好明确指定整型的精度,如 int32、int64 等。

5

 

五、整型初始化

声明整型变量时可以通过两种方式进行初始化:

  1. 初始化为一个常量值
var a int32 = 100

2. 初始化为一个常量值

var b int16 = int16(a) * 20

初始化值必须在对应的整型范围内,否则会溢出。

6

 

六、安全的类型转换

不同精度的整型不能直接转换,需要通过转换函数进行安全转换:

var a int32 = 100
var b int8 
b = int8(a) // 正确,有效转换

如果转换结果超出了目标类型的范围,会按溢出处理:

var a int16 = 128
var b int8
b = int8(a) // b为-128

7

 

七、特殊的 rune 类型

rune 类型实际上是一个 int32 的整数类型,用于表示一个 Unicode 码点,它可以表示一个 UTF-8 编码的 Unicode 字符:

var a rune = '中'

rune 类型经常用于表示字符。

8

 

八、示例代码

下面是一个使用 Go 语言整型的简单示例:

package main
import "fmt"
func main() {
  var a int16 = 25
  var b int8 
  var c int64
  b = int8(a)
  c = int64(a) + 20
  fmt.Println(a, b, c)
}

输出结果:

25 25 45

通过这个示例可以看出 Go 语言对整型的灵活使用。

9

 

总结

通过本文对 Go 语言整型的介绍,我们可以发现 Go 提供了丰富的整型类型供选择,可以表示不同大小和无符号的整数。我们应根据实际的值范围选择合适的整型。另外类型转换需要注意安全转换。希望大家可以逐步掌握 Go 语言中的整型用法。


封面图,自取哈

目录
相关文章
|
1天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
22 10
|
2天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
20 10
|
1天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
6天前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
3天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
8天前
|
Go
golang语言之go常用命令
这篇文章列出了常用的Go语言命令,如`go run`、`go install`、`go build`、`go help`、`go get`、`go mod`、`go test`、`go tool`、`go vet`、`go fmt`、`go doc`、`go version`和`go env`,以及它们的基本用法和功能。
20 6
|
8天前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
16 3
|
10天前
|
缓存 安全 Java
如何利用Go语言提升微服务架构的性能
在当今的软件开发中,微服务架构逐渐成为主流选择,它通过将应用程序拆分为多个小服务来提升灵活性和可维护性。然而,如何确保这些微服务高效且稳定地运行是一个关键问题。Go语言,以其高效的并发处理能力和简洁的语法,成为解决这一问题的理想工具。本文将探讨如何通过Go语言优化微服务架构的性能,包括高效的并发编程、内存管理技巧以及如何利用Go生态系统中的工具来提升服务的响应速度和资源利用率。
|
10天前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习
|
11天前
|
Java 数据库连接 数据库
携手前行:在Java世界中深入挖掘Hibernate与JPA的协同效应
【8月更文挑战第31天】Java持久化API(JPA)是一种Java规范,为数据库数据持久化提供对象关系映射(ORM)方法。JPA定义了实体类与数据库表的映射及数据查询和事务控制方式,确保不同实现间的兼容性。Hibernate是JPA规范的一种实现,提供了二级缓存、延迟加载等丰富特性,提升应用性能和可维护性。通过结合JPA和Hibernate,开发者能编写符合规范且具有高度可移植性的代码,并利用Hibernate的额外功能优化数据持久化操作。
27 0