Go语言常用的数据结构有哪些
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章为大家展示了Go语言常用的数据结构有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。学习目标掌握常见数据类型的使用布尔类型var v1 bool /
千家信息网最后更新 2026年10月31日Go语言常用的数据结构有哪些
本篇文章为大家展示了Go语言常用的数据结构有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
学习目标
掌握常见数据类型的使用
布尔类型
var v1 bool //默认值为falsev1 = true v2 := (1 == 2) // v2也会被推导为bool类型
数值类型
整型:
int8、byte、int16、int、uint、uintptr等。
| 类型 | 长度(字节) | 取值范围 |
|---|---|---|
| int8 | 1 | -128 ~ 127 |
| uint8(即byte) | 1 | 0 ~ 255 |
| int16 | 2 | -32 768 ~ 32 767 |
| uint16 | 2 | 0 ~ 65 535 |
| int32 | 4 | -2 147 483 648 ~ 2 147 483 647 |
| uint32 | 4 | 0 ~ 4 294 967 295 |
| int64 | 8 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
| uint64 | 8 | 0 ~ 18 446 744 073 709 551 615 |
| int | 平台相关 | 平台相关 |
| uint | 平台相关 | 平台相关 |
| uintptr | 同指针 | 在32位平台下为4字节,64位平台下为8字节 |
int和int32在Go语言里被认为是两种不同的类型,编译器也不会帮你自动 做类型转换
支持的位运算符:
| 运算 | 含义 | 样例 |
|---|---|---|
| x << y | 左移 | 124 << 2 // 结果为496 |
| x >> y | 右移 | 124 >> 2 // 结果为31 |
| x ^ y | 异或 | 124 ^ 2 // 结果为126 |
| x & y | 与 | 124 & 2 // 结果为0 |
| x|y | 或 | 124|2 // 结果为126 |
| ^x | 取反 | ^2 // 结果为3 |
浮点类型:
float32、float64。
不能直接用==来判断两个浮点数是否相等
可以这样判断浮点型的大小:
import "math" // p为用户自定义的比较精度,比如0.00001 func IsEqual(f1, f2, p float64) bool { return math.Fdim(f1, f2) < p }复数类型:
complex64、complex128。
复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示 虚部(imag)。如果了解了数学上的复数是怎么回事,那么Go语言的复数就非常容易理解了。
复数表示
复数表示的示例如下:
var value1 complex64 // 由2个float32构成的复数类型 value1 = 3.2 + 12ivalue2 := 3.2 + 12i // value2是complex128类型 value3 := complex(3.2, 12) // value3结果同 value2
实部与虚部
对于一个复数z = complex(x, y),就可以通过Go语言内置函数real(z)获得该复数的实 部,也就是x,通过imag(z)获得该复数的虚部,也就是y。
go语言不支持隐式转换(对比Java的隐式转换)
**字符串:**string。
var str string // 声明一个字符串变量 ,默认值为""
切片和数组
数组声明:
//数组定义var a[3]int //声明并初始化默认值为0a[0] = 1 //给第一个数赋值为1b := [3]int{1,2,3} //声明同时初始化c := [2][2]int{1, 2}, {3, 43} //多维数组初始化d := [...]int{1,2,3,4,5}//自动匹配长度数组遍历:
arr3 := [...]int{1, 3, 4, 5} for i := 0; i < len(arr3); i++ { t.Log(arr3[i]) } //i 是索引,不使用索引用_代替 for i, e := range arr3 { t.Log(e,i) }数组的截取:
a[开始索引(包含),结束索引(不包含)]
a := [...]int{1, 2, 3, 4, 5} a[1:2] //结果: 2a[1:3] //结果: 2,3a[1:Len(a)] //结果: 2,3,4,5 a[1:] //结果: 2,3,4,5 a[:3] //结果: 1,2,3切片
类似于Java中的集合List
切片声明:
//切片定义var s0 [] int //初始长度为0s0 = append(s0,1)//填充数据s := []int{}s1 := []int{1,2,3} /* 格式: type,len,cap 其中len个元素会被初始化为默认零值,未初始化元素不可以访问,既,索引为0,1,2的值初始化为0可以访问,3,4不可以 访问 cap按2倍增长(类似于Java中list长度的增长因子)*/s2 := make([]int,3,5)/map
map的声明:
var 变量名 map[key类型] value类型
m := map[string]int{"one": 1, "two": 2, "three": 3}m1 :=map[string]int{}m1["one"]=1//向容器中存入数据m2 :=make(map[string]int, 100 )//设置容量//判断值是否存在if v, ok := m1["one"]; ok { //值存在}注意:
当key不存在时:会输出默认值
当key对应的值不存在时:也会返回默认值
map的遍历:
m1 := map[int]int{1: 1, 2: 4, 3: 9} //a是key b是value for a, b := range m1 { t.Log(a, b) } //k是key for k := range m1 { t.Log(k) }上述内容就是Go语言常用的数据结构有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
类型
结果
复数
语言
平台
数组
数据
索引
长度
字节
常用
数据结构
结构
两个
也就是
元素
内容
变量
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技的发展
互联网金融 科技金融
互联网 的科技创新
互联网科技媒体
兼蜜互联网科技
北京三清互联网科技
济南华为互联网科技产业总部基地
现代互联网科技股
宁夏科技产业互联网案例
互联网科技和信息
青海科技产业互联网发展
想开互联网科技公司怎么样
互联网科技大赛获奖感言
滨湖区互联网智能科技产品有哪些
互联网时代的科技公司
美国互联网科技实力
富国互联网金融科技混合基金
黑龙江互联网科技公司
互联网科技创业计划的风险分析
宁波允成互联网科技有限公司
伟宏互联网科技
远信互联网科技
深圳齐家互联网科技
深圳艾佳互联网科技
移动互联网科技股
沐思想互联网科技有限公司
半导体是互联网高科技吗
互联网公司属于科技吗
互联网科技创新创业项目
前海云享互联网科技