Go语言基础数据类型详解与常用操作示例

林见深
林见深
发布时间:2026-10-16| 5人浏览过
原创

本文详细解析Go语言中的基础数据类型,涵盖整型、浮点数、布尔值及字符串的声明与特点。通过代码示例展示int64、float32等类型的用法,并重点讲解string类型的高频操作,如长度计算、拼接、子串判断及修改方法。

整型数据的分类与声明

Go语言的整型分为有符号、无符号及特殊三种。有符号整型包括 int8(-128 ~ 127)、int16、int32 和 int64;无符号整型包括 uint8(0 ~ 255)、uint16、uint32 和 uint64。特殊整型如 int 和 uint 的长度依赖于操作系统位数,指针大小则由 uintptr 表示。

var a int8 = 127
var b uint8 = 255
var c int64 = 9223372036854775807

Go 支持数字字面量语法,0b 开头代表二进制,0o 代表八进制,0x 代表十六进制,便于不同进制数的编写与阅读。

浮点数、复数与布尔值

浮点型支持 float32 和 float64,默认精度以 double 为准。复数分为 complex64(实部虚部各32位)和 complex128,例如 a := 1 + 2i。布尔值为 bool 类型,只能为 true 或 false,默认值为 false。Go 语言严格类型检查,禁止将整型隐式转换为布尔型,也不支持布尔型参与数值运算。

var f float32 = 3.14
var isDone bool = true
var c complex128 = 2 + 3i

字符串定义与转义规则

字符串由双引号包裹,内部可包含中文。转义字符包括 \r(回车)、\n(换行)、\t(制表符)、\\(反斜杠)及单双引号的转义。若需定义多行字符串,使用反引号包裹,此时所有转义字符失效,内容原样输出,非常适合处理模板或多行文本。

multiLine := `第一行
第二行`
escaped := "hello\nworld"

字符串常用操作指南

在 Go 中,字符串底层是字节数组,不可直接修改。常用操作涉及长度计算、分割、连接及查找。

  • 长度获取:len(string) 返回字节长度(一个汉字3字节),utf8.RuneCountInString 返回字符数量。
  • 连接:使用 + 或 fmt.Sprintf 进行拼接。
  • 分割与判断:strings.Split 分割切片,Contains、HasPrefix、HasSuffix 用于子串匹配。
  • 查找索引:Index 找首次出现位置,LastIndex 找最后一次出现位置。
name := "water"
zhName := "中国"
// 字节长度
fmt.Println(len(zhName)) // 输出 6
// Rune数量
fmt.Println(utf8.RuneCountInString(zhName)) // 输出 2
// 格式化拼接
result := fmt.Sprintf("我是%s", zhName)
// 分割
parts := strings.Split(name, "")

byte、rune 与修改字符串原理

byte 是 uint8 的别名,对应 ASCII 字符;rune 是 int32 的别名,对应 Unicode 码点。处理中文等多字节字符时需使用 rune。由于字符串不可变性,若要修改字符串,需先转换为 []byte 或 []rune 进行操作,再转回 string,此过程会触发新的内存分配。

func modifyString() {
   name := "water"
   byteSlice := []byte(name)
   byteSlice[0] = 'm'
   fmt.Println(string(byteSlice)) // mater

   zhName := "大熊猫"
   runeSlice := []rune(zhName)
   runeSlice[0] = '小'
   fmt.Println(string(runeSlice)) // 小熊猫
}

类型转换规范

Go 语言不支持隐式类型转换,必须使用强制转换语法 T(表达式),且仅当目标类型与原类型互斥时方可执行。这种设计确保了程序的类型安全。

以上就是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 算法库。