Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 指針指向指針(雙指針)

Go編程語言中的指針是一個變量,用于存儲另一個變量的內(nèi)存地址。指針是一個特殊的變量,因此它甚至可以指向任何類型的變量?;旧希@看起來像是一個指針鏈。當(dāng)我們定義一個指向指針的指針時,第一個指針將用于存儲第二個指針的地址。這個概念有時被稱為雙指針。

如何在Golang中聲明指向指針的指針?
將指針聲明為Pointer類似于在Go中聲明指針。區(qū)別在于我們必須在指針名稱的名稱之前放置一個額外的' * '。通常,當(dāng)我們使用var關(guān)鍵字和類型聲明指針變量時,就可以完成此操作。

示例1:在下面的程序中,指針pt2存儲pt1指針的地址。解引用pt2* pt2將給出變量v的地址,或者您也可以說指針pt1的值。如果您嘗試** pt2,那么將給出變量v的值,即100。

package main

import "fmt"

func main() {

    //整數(shù)類型變量
    var V int = 100

    //獲取一個指針
    //的整數(shù)類型
    var pt1 *int = &V

    //獲取指向的指針
    //指向pt1的指針存儲地址
    //將pt1轉(zhuǎn)化為pt2
    var pt2 **int = &pt1

    fmt.Println("變量V的值為 = ", V)
    fmt.Println("變量V的地址為 = ", &V)

    fmt.Println("pt1的值為 = ", pt1)
    fmt.Println("pt1地址為 = ", &pt1)

    fmt.Println("pt2的值為 = ", pt2)

    //解引用
    //指向指針的指針
    fmt.Println("pt2地址的值為(*pt2) = ", *pt2)

    //雙指針將給出變量V的值
    fmt.Println("*(pt2地址處的值為) 或 **pt2 = ", **pt2)
}

輸出:

變量V的值為 =  100
變量V的地址為 =  0xc000062090
pt1的值為 =  0xc000062090
pt1地址為 =  0xc00008c018
pt2的值為 =  0xc00008c018
pt2地址的值為(*pt2) =  0xc000062090
*(pt2地址處的值為) 或 **pt2 =  100

示例2:讓我們在上面的程序中進(jìn)行一些更改。通過使用解引用更改指針的值來為指針分配一些新值,如下所示:

// Go程序來說明指針指向指針的概念
package main

import "fmt"

func main() {

    // 定義int類型變量
    var v int = 100

    // 一個整數(shù)類型的指針
    var pt1 *int = &v

    //獲取指向的指針
    //指向pt1的指針存儲地址
    //將pt1轉(zhuǎn)化為pt2
    var pt2 **int = &pt1

    fmt.Println("變量v的值為 = ", v)

    //通過賦值來更改v的值
    //指向指針pt1的新值
    *pt1 = 200

    fmt.Println("更改pt1后存儲在v中的值 = ", v)

    //通過賦值來更改v的值
    //指向指針pt2的新值
    **pt2 = 300

    fmt.Println("更改pt2后存儲在v中的值 = ", v)
}

輸出:

變量v的值為 =  100
更改pt1后存儲在v中的值 =  200
更改pt2后存儲在v中的值 =  300

相關(guān)知識:Go 指針

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清