📜  Go语言-指针(1)

📅  最后修改于: 2023-12-03 15:15:25.119000             🧑  作者: Mango

Go语言-指针

在 Go 语言中,指针是一种非常重要的数据类型。指针是用来存储变量地址的变量。通过指针,我们可以直接修改变量的值,而不是通过拷贝变量来修改值。本文将介绍 Go 语言中指针的基本使用方法,以及指针的高级应用。

指针的基本使用

声明一个指针:

var ptr *int

在声明里面加上一个 * 表示这是一个指针类型,指向 int 类型的变量。

获取变量的地址:

var a int = 10
var ptr *int = &a

使用 & 符号取地址操作符获取变量 a 的地址,并将这个地址赋值给指针变量 ptr。

访问指针:

var a int = 10
var ptr *int = &a
fmt.Println(*ptr)

使用 * 符号对指针进行间接运算,访问指针指向的变量 a 的值。

修改指针指向的变量:

var a int = 10
var ptr *int = &a
*ptr = 20
fmt.Println(a)

使用 * 符号对指针进行间接运算,修改指针指向的变量 a 的值。

指针的高级应用
  1. 指针作为函数参数

可以将指针作为函数的参数,以便在函数内部修改变量的值:

func change(ptr *int) {
    *ptr = 20
}

func main() {
    var a int = 10
    var ptr *int = &a
    change(ptr)
    fmt.Println(a)
}

将指针作为参数传递给函数 change(),在函数内部修改指针指向的变量 a 的值。

  1. 指针数组

可以使用指针数组来处理多个指针:

var ptr [3]*int
a := 1
b := 2
c := 3
ptr[0] = &a
ptr[1] = &b
ptr[2] = &c

定义一个长度为 3 的指针数组,数组的元素都是指向 int 类型变量的指针。

  1. 指向指针的指针

在 Go 语言中,可以使用指向指针的指针。

a := 10
var ptr1 *int = &a
var ptr2 **int = &ptr1

定义一个变量 a,然后定义一个指针 ptr1 指向 a 的地址,最后使用一个指向指针的指针 ptr2 来指向 ptr1 的地址。

  1. new() 函数

Go 语言中的 new() 函数可以用来创建指针类型变量。

ptr := new(int)

定义一个类型为 int 的指针变量 ptr,使用 new() 函数创建了一个 int 类型的内存空间,并将其赋值给指针变量 ptr。

结论

指针是 Go 语言中的一个非常强大的工具,可以使用指针更加高效地操作变量。在使用时,需要注意指针的类型以及间接运算符号 * 和 & 的使用方法。在实际开发中,应该尽可能地利用指针的特性,提高程序的效率。