天天看點

Golang:3.5、Golang 指針3.5、Golang 指針

3.5、Golang 指針

指針

  • 取位址:

    &

  • 取值:

    *

指針位址:每一個變量都有一個位址,位址代表變量在記憶體中的位置

Go語言中的值類型(int、float、bool、string、array、struct)

對應的指針類型(*int、*int64、*string)

指針變量定義文法

// 指針變量名 指針類型
var var_name *var_type
           
package main

import "fmt"

func main() {
    // 聲明指針變量
    var ip *int
    fmt.Printf("%v\n", ip) // <nil>
    fmt.Printf("%T\n", ip) // *int

    // 聲明int變量
    var i int = 10

    // 取位址
    ip = &i

    fmt.Printf("%v\n", ip)
    // 0xc0000ae010

    // 取值
    fmt.Printf("%v\n", *ip)
    // 10
}

           

指向數組的指針

// 表示數組裡面的元素類型是指針類型
var ptr [MAX]*int;
           
package main

import "fmt"

func main() {
	arr := [...]int{1, 2, 3}
	var ptr [len(arr)]*int

	fmt.Printf("%v\n", ptr)
	// [<nil> <nil> <nil>]

	for i := 0; i < len(arr); i++ {
		ptr[i] = &arr[i]
	}

	fmt.Printf("%v\n", ptr)
	// [0xc000022090 0xc000022098 0xc0000220a0]

	for i := 0; i < len(ptr); i++ {
		fmt.Printf("%v\t", *ptr[i])
	}
	// 1	2	3
}