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的区别:

 

 

posted @   小尾学长  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示