Golang基础——数据类型:指针
指针:
var a *int // 指针,零值为 nil
var b *int = nil // 空指针
// var c *int // 野指针,直接赋值,没有指向,报错
// *c = 222 // invalid memory address or nil pointer dereference
var d *int
d = new(int) // 创建整型大小的空间,gc垃圾回收机制,自动释放空间
*d = 2
e := new(int) // 自动推导类型
*e = 2
p := 1
a = &p
*a = 111
// a = 222 // 不行
// f := new([3]*int) // &[<nil> <nil> <nil>]
// f := new([3]*int) // &[0 0 0]
g := [3]int{1, 2, 3}
var p2 *[3]int // 数组指针
p2 = &g
p1 := &g
p2[1] = 222
// *p2[2] = 333 // 不行,注意优先级:优先[],invalid indirect of p2[2] (type int)
(*p2)[2] = 333
k1 := 1
k2 := 2
k3 := 3
var arr = [3]*int{&k1, &k2, &k3} // 指针数组:[0xc000012090 0xc000012098 0xc0000120a0]
fmt.Println(p, a, b, d, *e, p2, &p2, p1)
fmt.Println(arr)
s := []int{1, 2, 3, 4, 5} // 切片指针
p := &s
fmt.Println(p) // &[1 2 3 4 5] p指向s变量的地址,s地址存储的是切片的地址
pp := &p
fmt.Printf("%T,%T\n", p, pp) // *[]int,**[]int ; pp 为二级指针
// p为一级指针,指向变量的地址
// pp为二级指针,指向指针的地址
// 三级指针,,,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2020-03-30 模块——常用模块
2020-03-30 检索文件大小,验证码生成,下载条,copy文件