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 程序。

相关推荐
To_OC3 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
2401_841495643 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
爱刷碗的苏泓舒7 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
ttwuai8 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json