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 @ 2020-07-16 16:06  小尾学长  阅读(164)  评论(0编辑  收藏  举报