Go语言学习笔记十四--一文搞懂Go语言指针
运行代码观察现象:
1 package main 2 3 import "fmt" 4 5 func change(num *int32) { 6 *num += 100 7 } 8 9 func main() { 10 var a int32 11 a = 100 12 fmt.Printf("a的值为:%d\n", a) 13 //用%p 来输出内存地址 用&符号取a的地址 这一点和C语言一样 14 fmt.Printf("a的地址为%p\n", &a) 15 16 //这个p是引用类型 其实就是一个指针 和C语言里面的指针异曲同工 17 //使用方式和C语言一模一样 18 var p *int32 19 p = &a 20 fmt.Printf("p所保存的地址为%p\n", p) 21 fmt.Printf("p所指的变量的值为为%d\n", *p) 22 23 *p = 150 24 fmt.Printf("指针修改后 p所指的变量的值为为%d\n", *p) 25 fmt.Printf("指针修改后 a的值为:%d\n", a) 26 27 28 //%T 表示输出其类型 29 fmt.Printf("p的类型为%T\n", p) 30 fmt.Printf("a的类型为%T\n", a) 31 32 //通过指针和函数修改变量的值 33 change(p) 34 fmt.Printf("指针函数修改后 p所指的变量的值为为%d\n", *p) 35 fmt.Printf("指针函数修改后 a的值为:%d\n", a) 36 37 //修改数组就传数组的指针 同理 38 //注意 切片是引用类型,切片也是指针只是是一个特殊的指针 39 40 }
输出结果:
a的值为:100 a的地址为0xc000092000 p所保存的地址为0xc000092000 p所指的变量的值为为100 指针修改后 p所指的变量的值为为150 指针修改后 a的值为:150 p的类型为*int32 a的类型为int32 指针函数修改后 p所指的变量的值为为250 指针函数修改后 a的值为:250
make和new的区别:
分类:
Go语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!