LLLeon / Blog

LLLeon 的部落格
15 stars 4 forks source link

Golang 中的指针 #1

Open LLLeon opened 7 years ago

LLLeon commented 7 years ago

指针的定义

A pointer is a value that points to the memory address of another variable.

指针是一个指向另一个变量内存地址的值。

示例 1

package main

import (
    "fmt"
)

func main() {
    a := 200
    b := &a

    fmt.Println("a -->", a)
    fmt.Println("*b -->", *b)
    fmt.Println("&a -->", &a)
    fmt.Println("b -->", b)

    *b++

    fmt.Println("a -->", a)
    fmt.Println("*b -->", *b)
}
a --> 200
*b --> 200
&a --> 0xc4200160b0
b --> 0xc4200160b0
a --> 201
*b --> 201

示例 2

package main

import (
    "fmt"
)

type packet struct {
    id   int
    size int
}

var (
    p packet
    q *packet
)

func main() {
    p = packet{
        id:   1,
        size: 2,
    }

    q = &p

    fmt.Println("p -->", p)
    fmt.Println("q -->", q)
    fmt.Println("*q -->", *q)
    fmt.Println("&p -->", &p)
    fmt.Println("&q -->", &q)
    fmt.Println("p.size -->", p.size)
    fmt.Println("(*q).size -->", (*q).size)
    fmt.Println("q.size -->", q.size)
}

参考资料:Understand Go pointers in less than 800 words or your money back