go語(yǔ)言指針探索

Go 語(yǔ)言的取地址符是 &,放到一個(gè)變量前使用就會(huì)返回相應(yīng)變量的內(nèi)存地址。以下實(shí)例演示了變量在內(nèi)存中地址:

func main() {

var a int = 10

fmt.Printf("變量的地址 = %x",&a)

}


解釋:

var var_name *var-type

/*

var-type 為指針類型,var_name 為指針變量名,

* 號(hào)用于指定變量是作為一個(gè)指針。以下是有效的指針聲明:

*/

1.go空指針

/*當(dāng)一個(gè)指針被定義后沒(méi)有分配到任何變量時(shí),它的值為 nil。

nil 指針也稱為空指針。

nil在概念上和其它語(yǔ)言的null、None、nil、NULL一樣,都指代零值或空值。

一個(gè)指針變量通??s寫(xiě)為 ptr。

func main() {

??????????? var ptr *int

???????????? fmt.Printf("ptr的值為:%x",ptr)

}

if (ptr != nil) {

?????????? //不是空指針

}else{

????????? //空指針

}

2.指針數(shù)組

const Max int = 3

func main() {

a := []int{10,100,200}

for i := 0; i < Max; i++ {

fmt.Printf("a[%d] = %d",i,a[i])

}

}

//輸出結(jié)果

a[0] = 10

a[1] = 100

a[2] = 200

//聲明了整形指針數(shù)組

var ptr [Max]*int

//ptr為整型指針數(shù)組。因此每個(gè)元素都指向了一個(gè)值。? 一下實(shí)例將三個(gè)整數(shù)存儲(chǔ)在指針數(shù)組中

const Max int = 3

func main() {

a :=[]int{10,200,300}

var ptr [Max]*int

for i := 0; i < Max; i++ {

ptr[i] = &a[i]? //指針地址賦值給指針數(shù)組

}

for i := 0; i < Max; i++ {

fmt.Printf("a[%d] = %d",i,*ptr[i])

}

}

//輸出結(jié)果

a[0] = 10

a[1] = 200

a[2] = 300

3.go語(yǔ)言指向指針的指針

//如果一個(gè)指針變量存放的又是另一個(gè)指針變量的地址,則稱這個(gè)指針變量為指向指針的指針變量

var ptr **int

func main() {

var a int

var ptr *int

var pptr *int

a = 3000

//指針ptr的地址

ptr = &a

//指向指針ptr的地址

pptr = &ptr

//獲取pptr的值

fmt.Printf("變量a = %d",a)

fmt.Printf("指針變量 *ptr = %d",*ptr)

fmt.Printf("指向指針的指針變量 **pptr = %d", **pptr)

}

//輸出

/*

變量 a = 3000

指針變量 *ptr = 3000

指向指針的指針變量 **pptr = 3000

*/

4.go語(yǔ)言指針作為函數(shù)參數(shù)

//Go 語(yǔ)言允許向函數(shù)傳遞指針,只需要在函數(shù)定義的參數(shù)上設(shè)置為指針類型即可。

func main() {

//定義局部變量

var a int = 100

var b int = 200

fmt.Printf("交換前的a的值 %d 交換前的b的值 %d",a,b)

//調(diào)用函數(shù)用于交換值

/*

&a指向 a變量的地址

&b指向 b變量的地址

*/

swap(&a ,&b)

fmt.Printf("交換后a的值 %d? 交換后b的值 %d",a,b)

}

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

var temp int

temp = *x? //保存x地址的值

*x = *y? ? //將y賦值給x

*y = temp? //將temp 賦值給y

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,615評(píng)論 3 44
  • fmt格式化字符串 格式:%[旗標(biāo)][寬度][.精度][arg索引]動(dòng)詞旗標(biāo)有以下幾種:+: 對(duì)于數(shù)值類型總是輸出...
    皮皮v閱讀 1,223評(píng)論 0 3
  • 01.{ 換行: Opening Brace Can't Be Placed on a Separate Lin...
    碼農(nóng)不器閱讀 2,478評(píng)論 0 14
  • 1.語(yǔ)言中變量的實(shí)質(zhì) 要理解C指針,我認(rèn)為一定要理解C中“變量”的存儲(chǔ)實(shí)質(zhì), 所以我就從“變量”這個(gè)東西開(kāi)始講起吧...
    金巴多閱讀 1,979評(píng)論 0 9
  • 能力模型 選擇題 [primary] 下面屬于關(guān)鍵字的是()A. funcB. defC. structD. cl...
    _張曉龍_閱讀 25,142評(píng)論 14 224

友情鏈接更多精彩內(nèi)容