亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Go 語(yǔ)言的指針

本文主要介紹 Go 語(yǔ)言中的指針。Go 語(yǔ)言中和 C/C++ 一樣,直接提供了指針類型,但是不同的是 Go 語(yǔ)言的指針并沒有那么高深莫測(cè),因?yàn)樗?strong>無(wú)法進(jìn)行位移和運(yùn)算的,它只是一個(gè)存儲(chǔ)了其它變量地址的變量而已。它在 Go 語(yǔ)言中最大的作用就是在值傳遞的過程中減少內(nèi)存消耗,畢竟一個(gè)地址的存儲(chǔ)開銷是十分少的。

 

1.指針的定義和使用

在 Go 語(yǔ)言中指針類型的聲明和 C/C++ 類似,都是采用*符號(hào)來(lái)區(qū)分正常類型變量和指針變量。

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? func main() {
  • 8? ? ? ? ? str := "Hello World !"
  • 9? ? ? ? ? var strP *string
  • 10? ? ? ? strP = &str
  • 11? ? ? ? *strP = "Hello Codey !"
  • 12? ? ? ? fmt.Println("指針strP的地址為", strP)
  • 13? ? ? ? fmt.Println("指針strP指向的值為", *strP)
  • 14? ? ? ? fmt.Println("指針str的地址為", &str)
  • 15? ? ? ? fmt.Println("指針str的值為", str)
  • 16? }
  • 第 9 行:使用*+變量類型的形式聲明一個(gè)string類型的指針。
  • 第 10 行:將指針 strP 指向變量 str,也就是將變量 str 的地址賦值給指針變量 strP 。&為取地址符,可以取出變量所在的地址。
  • 第 11 行:通過指針修改 str 的值。

執(zhí)行結(jié)果

圖片描述

從以上輸出結(jié)果可以看出,變量 strP 存儲(chǔ)的值就是變量 str 的地址,可以通過使用 *strP 操作符改變其存儲(chǔ)的地址所存儲(chǔ)的值。

 

2. 指針作為函數(shù)的參數(shù)

Go 語(yǔ)言中只有值傳遞,沒有引用傳遞,因?yàn)橐脗鬟f設(shè)計(jì)之初是為了解決函數(shù)想要有多個(gè)返回值的問題,但是 Go 語(yǔ)言的函數(shù)自帶多返回值的返回方式。所以想要指針作為參數(shù)傳入函數(shù)中,只能傳遞地址進(jìn)入函數(shù)進(jìn)行修改,并不能直接引用指針參數(shù),這一特點(diǎn)就大大降低了Go語(yǔ)言指針的使用難度。

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? func main() {
  • 8? ? ? ? ? a := 10
  • 9? ? ? ? ? b := 20
  • 10? ? ? ? fmt.Println("交換前的a=", a, "b=", b)
  • 11? ? ? ? swap(&a, &b)
  • 12? ? ? ? fmt.Println("交換后的a=", a, "b=", b)
  • 13? }
  • 14
  • 15? func swap(a, b *int) {
  • 16? ? ? ? *a, *b = *b, *a
  • 17? }
  • 第 11 行:將變量a和b的地址作為函數(shù)swap指針參數(shù)的值傳入函數(shù);
  • 第 16 行:交換這兩個(gè)指針保存的地址所保存的值。

執(zhí)行結(jié)果

圖片描述

 

3. 小結(jié)

本文主要講解了Go語(yǔ)言中指針的使用,以下為注意事項(xiàng):

  • Go 語(yǔ)言的指針不可以做偏移;
  • Go 語(yǔ)言的指針可以看作一個(gè)存儲(chǔ)地址的特殊變量類型。

文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!