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

相关推荐
源代码•宸3 分钟前
Golang基础语法(go语言结构体、go语言数组与切片、go语言条件句、go语言循环)
开发语言·经验分享·后端·算法·golang·go
霍田煜熙7 分钟前
【无标题】
java
l1t9 分钟前
快速加载CSV文件到数据库的工具pg_csv_loader
数据库·算法
无忧智库10 分钟前
深度拆解:某大型医院“十五五”智慧医院建设方案,如何冲刺互联互通五级乙等?(附技术架构与实施路径)
java·数据库·架构
yugi98783816 分钟前
基于Matlab的晴空指数计算实现
开发语言·算法·matlab
守护砂之国泰裤辣20 分钟前
Windows+docker下简单kafka测试联调
java·运维·spring boot·docker·容器
代码方舟21 分钟前
Java企业级风控实战:对接天远多头借贷行业风险版API构建信贷评分引擎
java·开发语言
Maiko Star32 分钟前
Word工具类——实现导出自定义Word文档(基于FreeMarker模板引擎生成动态内容的Word文档)
java·word·springboot·工具类
ADI_OP33 分钟前
ADAU1452的开发教程3:常规音频算法的开发(2)
算法·dsp开发·adi dsp中文资料·adi dsp·adi音频dsp·adi dsp开发教程
优雅的38度33 分钟前
maven的多仓库配置理解
java·架构