Go 语言基础数据类型详解:布尔、数字与字符串

Theo
Theo
发布时间:2026-10-16| 6人浏览过
原创

本文深入解析 Go 语言中最核心的基础数据类型,包括布尔型、整型、浮点型、复数以及字符串。文章不仅详细列出了各类数据的内存占用与取值范围,还通过具体的代码示例演示了声明方式、进制表示、字符编码差异(byte vs rune)以及常用标准库的调用方法,旨在帮助开发者构建扎实的 Go 语言编程基础。

结果与目标

掌握 Go 语言基础类型的使用规范,能够根据场景选择合适的数值类型以避免溢出或精度丢失,并能正确处理字符串中的多字节字符。

布尔型 (bool)

Go 语言的布尔型是最简单的数据类型,仅包含两个预定义常量:true 和 false。它在逻辑判断中占据核心地位。

第1步:布尔型声明与推断

目的:明确变量的布尔类型属性。
操作:可以使用关键字 bool 显式声明,也可以利用 Go 的类型推断机制自动识别。

// 显式声明
var t bool = true
var f bool = false

// 类型推断
var t = true
f := false

第2步:逻辑运算与条件控制

目的:利用布尔值控制程序流程。
操作:比较运算符(如 >=)和逻辑运算符(&&, ||)的结果均为布尔型,常用于 if 或 for 语句的判断条件。

if 3 > 2 {
	fmt.Println("3 is greater than 2")
}

for i := 0; i < 10; i++ {
	fmt.Println(i)
}

数字类型

Go 的数字类型主要分为整型、浮点型和复数三类。正确选择类型对内存使用和计算性能至关重要。

第1步:整型 (Integer)

目的:处理整数运算并了解不同精度的适用场景。
参数:整型分为有符号(signed)和无符号(unsigned),支持从 int8 到 int64 及对应的 uint 系列。特别地,int 和 uint 的长度取决于操作系统(32位或64位)。

名称占用字节取值范围是否有符号
int81-128 ~ 127是
int162-32768 ~ 32767是
int324-2147483648 ~ 2147483647是
int648-9223372036854775808 ~ 9223372036854775807是
int4/8依平台而定是
uint810 ~ 255否
uint1620 ~ 65535否
uint3240 ~ 4294967295否
uint6480 ~ 18446744073709551615否
uint4/8依平台而定否

第2步:进制的表示方法

目的:在代码中以不同格式编写整数。
操作:十进制无需前缀;八进制以 0 开头;十六进制以 0x 或 0X 开头。

n1 := 57      // 十进制
n2 := 071     // 八进制
n3 := 0x39    // 十六进制

第3步:字符与 UTF-8 编码处理

目的:理解 ASCII 字符与中文等多字节字符的差异。
入口:byte 和 rune 类型。
动作:byte 是 uint8 的别名,用于存储 ASCII 字符(如英文字母);rune 是 uint32 的别名,用于存储 UTF-8 字符(如中文汉字)。Go 源码默认采用 UTF-8 编码。

b := byte('c')   // 输出: 99 (ASCII码)
r := rune('中')   // 输出: 20013 (Unicode码点)

第4步:浮点型 (Floating Point)

目的:处理带小数点的数值。
参数:提供 float32 和 float64,遵循 IEEE 754 标准。
重要提示:float32 精度约 6 位,float64 精度约 15 位。在绝大多数场景下,建议优先使用 float64 以避免精度损失。

f32 := float32(1.88)
f64 := float64(2e3) // 等同于 2000

第5步:复数 (Complex)

目的:进行复数运算。
操作:Go 提供 complex64 和 complex128 两种精度。
完成状态:可通过 real() 和 imag() 提取实部与虚部,并使用 math/cmplx 包进行平方根等复杂数学运算。

x := complex(1, 2) // 等同于 1+2i
fmt.Println(real(x)) // 1
fmt.Println(imag(x)) // 2

字符串 (string)

字符串在 Go 中是不可变的字符序列,其底层由字节数组实现。正确使用字符串涉及编码识别、索引边界管理及标准库操作。

第1步:字符串声明与转义

目的:创建字符串并处理特殊字符。
动作:使用双引号 "..." 创建的字符串支持转义字符(如 \n 换行,\t 制表符);使用反引号 `...` 创建的原始字符串不支持转义,其中的字符将原样输出。

s1 := "test\n"    // s1 包含换行符
s2 := `test\n`    // s2 包含字面量 \n

第2步:索引访问与截断

目的:获取字符串的子串或特定字节。
风险提醒:由于 Go 字符串按字节寻址,索引操作的范围必须在 0 ≤ i < len(s) 之间。超出此范围将引发 panic: slice bounds out of range 或 index out of range 异常。

s := "this is string"
sub := s[0:1]  // 安全截取
// s[100] 会导致程序崩溃

第3步:类型转换与拼接

目的:与其他数据类型交互。
操作:字符串可通过 []byte(s) 转为字节切片,再转回字符串进行拼接或修改(因不可变,通常生成新副本)。数字与字符串互转需使用 strconv 包,而常规大小写转换及查询则使用 strings 包。

// 字符串拼接
res := "hello" + "world"

// 与 []byte 互转
b := []byte("test")
s := string(b)

// 数字转换
str := strconv.Itoa(123)       // 123
num, err := strconv.Atoi("123") // 123

简要总结

Go 语言的基础数据类型虽然分类清晰,但在使用时需注意细节:例如浮点数推荐优先使用 float64,处理中文字符应使用 rune 而非 byte,以及在进行字符串索引时严防越界。扎实掌握这些基础规范,是编写高效、稳定 Go 程序的前提。

以上就是 Go 语言基础数据类型详解的详细内容,更多关于 Go 语言数据类型学习的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。