指针

指针基础

指针也是一种类型,也可以创建变量,称之为指针变量。指针变量的类型为 *Type,该指针指向一个 Type 类型的变量。指针变量最大的特点就是存储的某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量。

  • 如果指针声明后没有进行初始化,其默认零值是 nil
  • 在函数中对指针参数所做的修改,在函数返回后会保存相应的修改。
  • Go 中不支持指针运算例如:p++ ,但这在 Go 中是不支持的。
1
2
3
4
5
func fun() {
var num int = 8
var p *int = &num
fmt.Println(p)
}

指针与切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main

import "fmt"

func fun() {
num := 8
p := new(int)
p = &num
fmt.Println(p)
fmt.Println(*p)
}

func fun2(arr []int) {
arr[0] = 1
}

func fun3(arr *[]int) {
(*arr)[1] = 5
}

func main() {
arr := make([]int, 4, 5)
arr = append(arr, 2, 3)

// 结果为[1 0 0 0 2 3]
fun2(arr)
fmt.Println(arr)

// 结果为[1 5 0 0 2 3]
fun3(&arr)
fmt.Println(arr)
}