Golang中的指针类型(Pointer)也是一种数据类型,它存储了一个变量或者数据的内存地址。指针类型允许我们通过内存地址来访问和修改变量的值。
创建指针变量:
在Golang中,我们可以使用“&”符号来获取一个变量的内存地址,例如:
var num int = 10 fmt.Println(&num)
输出:0xc0000a0078
上面的代码中,我们创建了一个名为“num”的整数变量,并使用“&”符号来获取它的内存地址,然后通过调用fmt.Println()函数来打印这个内存地址,输出结果为0xc0000a0078。
这个内存地址就是指针类型变量所存储的值,我们可以将它赋给一个指针变量,例如:
var num int = 10 var ptr *int = &num fmt.Println(ptr)
输出:0xc0000a0078
使用指针变量:
我们可以使用“*”符号来访问指针变量所指向的内存地址的值,例如:
var num int = 10 var ptr *int = &num fmt.Println(*ptr)
输出:10
上面的代码中,我们创建了一个整数变量“num”和一个指向该变量的指针变量“ptr”。然后使用“*ptr”操作符来访问指针变量所指向的内存地址的值,输出结果为10。
修改指针变量所指向的值:
我们可以通过指针变量来修改所指向的变量的值,例如:
var pidancode string = "pidancode.com" var ptr *string = &pidancode fmt.Println(*ptr) *ptr = "皮蛋编程" fmt.Println(*ptr)
输出:
pidancode.com 皮蛋编程
上面的代码中,我们创建了一个名为“pidancode”的字符串变量,并使用“&”符号来获取它的内存地址,并将其赋给名为“ptr”的指针变量。然后通过“*ptr”操作符访问指针变量所指向的内存地址的值,输出结果为“pidancode.com”。
接着,我们通过“ptr”操作符来修改指针变量所指向的值为“皮蛋编程”,最后再次打印“ptr”的值,输出结果为“皮蛋编程”。
需要注意的是,指针变量只能存储与指向变量相同类型的内存地址,否则会编译错误。
var num int = 10 var ptr *string = &num // 错误,指针类型不匹配
总结:
- 指针变量存储的是变量的内存地址。
- 可以使用“&”符号获取变量的内存地址,并将其赋给指针变量。
- 使用“*”符号来访问指针变量所指向的内存地址的值。
- 通过指针变量可以修改所指向变量的值。
- 指针变量只能存储与指向变量相同类型的内存地址。