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 // 错误,指针类型不匹配

总结:

  1. 指针变量存储的是变量的内存地址。
  2. 可以使用“&”符号获取变量的内存地址,并将其赋给指针变量。
  3. 使用“*”符号来访问指针变量所指向的内存地址的值。
  4. 通过指针变量可以修改所指向变量的值。
  5. 指针变量只能存储与指向变量相同类型的内存地址。