slice 切片 引用类型
//直接声明 + 初始化
var slice1 []string
slice1 = make([]string, 10 ,10)
//基于数组 、基于切片
*** 基于数组、切片、由于切片使用的是地址引用
- 在 容量 cap 不变的情况下,改变值 原变量 与 新变量 值都会改变
- 在容量 cap 改变时候,原变量 新变量 不再互相影响
- 使用 copy 方法 可使 2变量 内存地址分离
切片扩容
>1024 0.25倍扩展
< 1024 2倍扩容
曾 append ,删 apeng(slice[:1], slice[3:]...) ,改查 slice[key]
map 引用类型
1、var 声明 + make 初始化 map[type]type
-
map key 是否存在 判断: _,ok := map[key]
abcSlice := strings.Split("a,b,c,d,d,e",",") //var abcCount map[string]int abcCount := make(map[string]int) for _,v := range abcSlice { if _,ok := abcCount[v]; !ok { abcCount[v] = 1 continue } abcCount[v] += 1 } delete(abcCount,"b")
func 函数
abfun := func(){} //可以赋值给变量、函数可以为形参
闭包函数 = 匿名函数 + 函数引用外部的变量
函数可以访问外部变量 、外部不能访问函数内部变量、func(){}() 最后的括号代表执行的意思
defer recover() panice() 先后顺序使用
defer 最后的先执行、用于文件关闭 资源清理 解锁记录
本文介绍了Go语言中切片的引用特性,包括基于数组和切片的创建,以及在扩容时如何影响变量。同时讲解了map的使用,如检查键是否存在和计数操作。还提及了函数和闭包的概念,包括defer和recover的使用顺序。
695





