go语言自带的数据结构
指针Pointer
定义 var p *int,zero value为nil
p = &i 生成指向对象i的指针
*p 实际操作的是 i
结构体struct
1 2 3 | type Vertex struct { X, Y int } |
使用点获取结构体变量的字段值
结构体变量可如此初始化Vertex{X: 1} Y默认为0
数组Array
var a [10]int 数组的size不可变
切片Slice
var s []int
s = a[low : high] create a slice which includes elements low through high of array a. 不包括最后一个元素high
low和high的默认值分别为0和slice的长度
slice是对数组的引用,通过slice更改元素值相当于更改数组元素值,也会同步体现到其它引用同一数组的slice
slice的length为元素个数,可用len方法获取;capacity为对应数组的元素数,从slice的第一个元素算起,可用cap方法获取。
slice的zero value为nil,其length和capacity都为0,且无对应的数组。
make function
make([] int, length, capacty)
slices of slices 2-dimension slice
[][]int
appending方法
append(s, []T)
数组大小如果不够用于添加新元素,将分配新数组,大小为现有大小的2倍。append方法返回的slice指向新分配的数组。
range
Ranging over a slice returns two values. The first is the index, the second is a copy of the element at that index.
for i, v := range slice{}
map
map定义 var m map[key_type]value_type
map定义后需要使用make函数初始化,分配内存。
map literal 最后一个键值对末尾也需要逗号
map mutation
插入 更新 m[key] = elem
读取 elem = m[key]
删除 delete(m, key)
m[key] 返回两个值 第一个为value 第二个为key是否存在于m中(true/false) 若key不存在于m中,则返回的value为map元素类型的零值。
Function value can be used as function argument
函数做参数时变量类型中需要写清自身的参数的类型和返回值类型。
闭包函数
一个函数的返回值是另一个函数,返回的函数又调用了父函数中定义的变量。
The function is bound to the variable.
将一个新变量初始化为定义好的闭包函数,每次调用后,被返回值函数引用的变量是在上一次的基础上发生变化,而不是重新初始化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!