一、指针
//指针 获取对象、变量的内存地址
//取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
//指针类型前面加上 * 号(前缀)来获取指针所指向的内容
func pointDef() {
//定义指针变量
var ip *int /* 指向整型*/
//获取变量地址
a := 1
fmt.Println("变量的内存地址:", &a)
//通过指针变量访问目标地址
ip = &a
fmt.Println("ip变量的目标指针存储地址:", ip)
fmt.Println("ip指针所指向的内容:", *ip)
//空指针
var ptr *int
if (ptr == nil) {
fmt.Printf("ptr 为空指针,值为 : %x\n", ptr)
}
//向函数传递指针
b := 2
var x *int
var y *int
x = &a
y = &b
//传入指针 值分别为1 2
swap(x, y)
}
//指针传入函数
func swap(x *int, y *int) {
var temp int
//指针传值
temp = *x //x指针指向的值赋值给tmp
fmt.Println("temp:", temp)
*x = *y //y指针指向的值,赋值给x指针
fmt.Println("*x:", *x)
fmt.Println("x赋值给y前,y地址:", y)
*y = temp //temp 赋值给y值
fmt.Println("*y:", *y)
//打印指针指向地址
fmt.Println("x地址:", x)
fmt.Println("y地址:", y)
}