Go语言常用的数据结构有哪些
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,本篇文章为大家展示了Go语言常用的数据结构有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。学习目标掌握常见数据类型的使用布尔类型var v1 bool /
千家信息网最后更新 2025年02月24日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安全错误
数据库的锁怎样保障安全
建设银行服务器不可用什么意思
代理 访问数据库
服务器及存储售后服务承诺书
QQ飞车手游可以转移服务器吗
亿佳网络技术有限公司待遇
温州现金贷软件开发公司吗
威海软件开发费用
网络技术实训指南
计算机三级考试网络技术方向
自然资源地理信息与网络安全
怎样关闭金蝶的加密服务器
数据库涉及表
杭州市网络安全协会姚
alibaba2.1数据库
网络安全解决方案的层次
中国移动顺应网络技术
安卓数据库驱动程序
服务器数据迁移完放哪
虚拟机怎么连接web服务器
控制网络技术基础课后题
亿佳网络技术有限公司待遇
学校网络安全工作保障制度
怎样加强网络安全的
太原金腾网络技术有限公司
广州教学软件开发
中国对网络安全的太封闭
数据库用什么语言操作的
东营公司管理oa软件开发公司
软件开发测试岗靠谱吗
服务器x99进不去阵列