Go数据类型介绍

Go 是一门静态类型 编程语言。这意味着变量在声明时就确定了类型,并且之后不能改变。乍一看,静态类型似乎不太方便:你可能需要花很多时间去修复编译器报错,程序才能通过编译。然而,提前知道数据类型可以帮助我们在编译阶段 就理解程序为什么不能正常工作,从而避免许多常见错误。

Go 中有多种内置数据类型,下面我们将逐一介绍。


整数(Integers)

在 Go 中,整数类型包括:
uint8uint16uint32uint64int8int16int32int64

其中 8、16、32、64 表示该类型占用的位数
uint 表示无符号整数 (unsigned integer),int 表示有符号整数 (signed integer)。

无符号整数只能取非负值(包括 0)。

类型 描述 最小值 最大值
uint8 无符号 8 位整数 0 255
uint16 无符号 16 位整数 0 65535
uint32 无符号 32 位整数 0 2³² − 1
uint64 无符号 64 位整数 0 2⁶⁴ − 1
uint 与平台相关(32 或 64 位) 0 与平台相关
int8 有符号 8 位整数 −128 127
int16 有符号 16 位整数 −32768 32767
int32 有符号 32 位整数 −2 147 483 648 2 147 483 647
int64 有符号 64 位整数 −9 223 372 036 854 775 808 9 223 372 036 854 775 807
int 与平台相关(32 或 64 位) 与平台相关 与平台相关

变量声明方式

go 复制代码
var number1 int
number1 = 100

var number2 int = 100

变量类型在编译期确定。即使我们不显式指定类型 ,Go 也可以根据初始值推断类型。下面的变量在编译后都会是 int 类型:

go 复制代码
var number1 = 100 
// 或者
number2 := 100

浮点数(Floats)

浮点数用于表示带小数的实数,例如:1.234123.40.00001234

它们在计算机中的表示方式较为复杂,这里只需要记住以下几点:

  • 浮点数不能精确表示所有十进制小数

    例如,1.01 - 0.99 的结果可能是
    0.020000000000000018,非常接近但并不完全等于 0.02。

  • 浮点数也有大小之分:32 位或 64 位。位数越大,精度越高。

  • 除了普通数字,还有特殊值:

    • NaN(Not a Number,例如 0/0)

    • 正无穷 +∞

    • 负无穷 −∞

Go 中有两种浮点类型:

  • float32(单精度)

  • float64(双精度)

在大多数情况下,float32 已经足够;如果需要更高精度,可以使用 float64


布尔值(Booleans)

布尔类型是 bool(以 George Boole 命名),用于表示真或假

一个 bool 类型变量只占用 1 个字节

逻辑运算符如下:

字面量 含义
&& 与(AND)
! 非(NOT)

bool 类型只能取两个值:truefalse

go 复制代码
var b bool = true

运算示例:

go 复制代码
var b1 = true
b2 := !b1      // false
b3 := b2 || b1 // false OR true => true
b4 := b2 && b3 // false AND true => false
b5 := b1 && b3 // true AND true => true

rune 与 byte

Go 中还有一些有趣的数值类型别名:

  • runeint32 的别名

  • byteuint8 的别名

Go 没有单独的字符类型,而是用:

  • byte 表示 ASCII 字符

  • rune 表示 Unicode 字符的码点值


复数(Complex numbers)

与一些语言不同,Go 原生支持复数

  • complex64:32 位实部 + 32 位虚部

  • complex128:64 位实部 + 64 位虚部

Go 提供了内置的 complex 函数,用于使用变量创建复数。

复数支持所有基本算术运算:+*/

这里不再展开,如有兴趣,可以查阅 cmplx 包的官方文档。


总结

Go 提供了多种基本(原始)数据类型,本节主要介绍了:

  • 有符号与无符号整数

  • 浮点数

  • 复数

  • bool 类型

  • runebyte

通过组合这些类型,我们就可以使用算术和逻辑表达式来编写完整的 Go 程序。

相关推荐
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
IT爱学堂3 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言
民乐团扒谱机3 小时前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
evans在进步3 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
Nil2084 小时前
leetcode 189轮转数组
数据结构·算法·leetcode
FfHUCisI4 小时前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
-dzk-4 小时前
【动态规划】LC 118.杨辉三角
算法·动态规划
恣逍信点4 小时前
《凌微经》静态自悖——变化之自因
人工智能·科技·算法·机器学习·业界资讯·拓扑学·哲学
m0_547486664 小时前
《Java程序设计与实践 》全套PPT课件2026
java·开发语言
吃着火锅x唱着歌4 小时前
LeetCode 3885.设计事件管理器
算法·leetcode·职场和发展