指针:
指针就是地址,指针变量就是存储地址的变量
*p: 解引用,间接引用
栈帧:用来给函数运行提供内存空间,取内存与stack上
当函数调用时,产生栈帧,函数调用结束,释放栈帧
栈帧存储:1 局部变量,2 形参,3内存字段描述值
指针使用注意:
空指针:未被初始化的指针 var p *int
野指针:被一片无效地址空间初始化
格式化输出:
%q 以Go语言格式显示字符串,默认带""符
%v 显示对应数据详细信息
变量存储
等号左侧变量代表变量所指向的内存空间
等号右侧变量代表变量内存空间存储的数据值
指针函数传参(传引用)
传地址将星灿的地址值作为函数参数传递
传值将实参的值拷贝一份给形参
传引用再栈帧内部修改另一个栈帧的变量值
切片:
为什么切片:
数组的容量固定,不能自动扩展
值传递,数组作为函数参数时,将整个数组值拷贝一份给形参
几乎可以在所有场景中使用切片提单数组
切片本质:不是一个数组的指针,是一种结构体,用来操作数组内部元素
操作:
append, copy
Map:
创建:var m map[int]string
m := map[int]string{}
m := make(map[int]string}
m := make(map[int]string, 1)
操作:
添加: m[key] = val
删除: delete(m, key)