指針

一、定義:指針也叫指針變量,存儲一個變量的地址。兩個符號:& 取一個變量地址;* 取一個指針變量所指向的地址的值函數

package main

import (
    "fmt"
)

func main() {
    var x int
    var x_ptr *int

    x = 10
    x_ptr = &x

    fmt.Println(x)
    fmt.Println(x_ptr)
    fmt.Println(*x_ptr)
}

結果圖spa

&符號是取變量地址,*符號是取地址指向的值;一個普通的變量,不是指針變量的話,只能使用&符號取到地址,而不能使用*符號指針

&符號和*符號是能夠相互抵消的,示例代碼以下code

package main

import (
    "fmt"
)

func main() {
    var x int
    var x_ptr *int

    x = 10
    x_ptr = &x

    fmt.Println(x)      //輸出x的值
    fmt.Println(&x_ptr) //輸出x_ptr的地址
    fmt.Println(*x_ptr) //輸出x_ptr指向的值
    fmt.Println(x_ptr)  //輸出x的地址
    fmt.Println(*&x_ptr)  //*和&能夠相互抵消
    fmt.Println(&*x_ptr)
    fmt.Println(&x)
    fmt.Println(*&x)
}

結果圖blog

二、用途:做爲實參傳入函數,改變原來變量的值class

package main

import (
    "fmt"
)

func change(x *int) {
    *x = 200
}

func main() {
    var x int = 100
    fmt.Println(x)
    change(&x)
    fmt.Println(x)
}

結果圖import

三、使用new關鍵字建立一個指針變量

package main

import (
    "fmt"
)

func set_value(x_ptr *int) {
    *x_ptr = 100
}

func main() {
    //使用new建立一個指針
    x_ptr := new(int)
    //將指針指向某值的地址
    set_value(x_ptr)
    //打印該指針指向的地址
    fmt.Println(x_ptr)
    //打印指針所在地址
    fmt.Println(&x_ptr)
    //打印指針指向地址的值
    fmt.Println(*x_ptr)
}

結果圖im

四、交換兩個變量值示例img

package main

import (
    "fmt"
)

func swap(x, y *int) {
    *x, *y = *y, *x
}

func main() {
    x_val := 100
    y_val := 200
    swap(&x_val, &y_val)
    fmt.Println(x_val)
    fmt.Println(y_val)
}

結果圖

相關文章
相關標籤/搜索