Go语言常用的数据结构有哪些
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章为大家展示了Go语言常用的数据结构有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。学习目标掌握常见数据类型的使用布尔类型var v1 bool /
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
关系数据库基本特征有哪些
电信校招网络技术工程师面试
黎川im即时通讯软件开发
喜欢追求软件开发
远离网络安全上网的案例
亚马逊数据库配置要求
如何对云服务器进行管理
高防香港服务器
希望网络安全企业 不断
新手学习数据库
汽车网络技术主从通信
数据库08s01
信息化和网络安全专业
最新模式制度系统软件开发
双阳区通用网络技术咨询售后服务
学软件开发都做什么工作吗
嵊州软件开发哪里专业
黑客帝国网络安全
移动软件开发接口设计
手机网络安全证书在哪允许
重庆直播软件开发机构
警察网络安全专业好不好
圆梦金格网络技术工作室
护苗 网络安全教育ppt
安卓自动炒股软件开发
数字巷道数据库
宿豫区巨型网络技术市场
信宜软件开发文档
SQL可以与哪些数据库打交道
软件开发公司学徒招聘