指针

Go 语言也有指针。 指针用来保存一个值的内存地址。

类型 *T 就是类型 T 的指针类型。 指针的 零值 ( zero value )是: nil

var p *int

操作符( operator ) & 用来取被操作数( operand )的指针(内存地址):

i := 42
p = &i

操作符 * 用来取出指针指向的值:

fmt.Println(*p)
*p = 21

这个操作简称 取值 ( dereferencing )。

/_src/tour/pointers.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import "fmt"


func main() {
    i, j := 42, 2701

    p := &i         // point to i
    fmt.Println(*p) // read i through the pointer

    *p = 21         // set i through the pointer
    fmt.Println(i)  // see the new value of i

    p = &j          // point to j
    *p = *p / 37    // divide j through the pointer
    fmt.Println(j)  // see the new value of j
}

注解

C 语言不同, Go 语言指针 没有指针算术 ( pointer arithmetic )。

下一步

下一节 我们一起来看看 Go 语言 结构体

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../_images/wechat-mp-qrcode.png

小菜学编程

微信打赏