go學習筆記 2指標

2021-09-14 08:37:06 字數 2801 閱讀 8550

go 語言中指標是很容易學習的,go 語言中使用指標可以更簡單的執行一些任務。

接下來讓我們來一步步學習 go 語言指標。

我們都知道,變數是一種使用方便的佔位符,用於引用計算機記憶體位址。

go 語言的取位址符是 &,放到乙個變數前使用就會返回相應變數的記憶體位址。

執行以上**輸出結果為:

現在我們已經了解了什麼是記憶體位址和如何去訪問它。接下來我們將具體介紹指標。

乙個指標變數指向了乙個值的記憶體位址。

類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下:

var var_name *var-type
var-type 為指標型別,var_name 為指標變數名,* 號用於指定變數是作為乙個指標。以下是有效的指標宣告:

var ip *int        /* 指向整型*/

var fp *float32 /* 指向浮點型 */

本例中這是乙個指向 int 和 float32 的指標。

指標使用流程:

在指標型別前面加上 * 號(字首)來獲取指標所指向的內容。

以上例項執行輸出結果為:

a 變數的位址是: 20818a220

*ip 變數的值: 20

當乙個指標被定義後沒有分配到任何變數時,它的值為 nil。

nil 指標也稱為空指標。

nil在概念上和其它語言的null、none、nil、null一樣,都指代零值或空值。

乙個指標變數通常縮寫為 ptr。

檢視以下例項:

package main

import "fmt"

func main() 

以上例項輸出結果為:

ptr 的值為 : 0
空指標判斷:

if(ptr != nil)     /* ptr 不是空指標 */

if(ptr == nil) /* ptr 是空指標 */

內容

描述go 指標陣列

你可以定義乙個指標陣列來儲存位址

go 指向指標的指標

go 支援指向指標的指標

go 向函式傳遞指標引數

通過引用或位址傳參,在函式呼叫時可以改變其值

在我們了解指標陣列前,先看個例項,定義了長度為 3 的整型陣列:

package main

import "fmt"

const max int = 3

func main()

var i int

for i = 0; i < max; i++

}

以上**執行輸出結果為:

a[0] = 10

a[1] = 100

a[2] = 200

有一種情況,我們可能需要儲存陣列,這樣我們就需要使用到指標。

以下宣告了整型指標陣列:

var ptr [max]*int;
ptr 為整型指標陣列。因此每個元素都指向了乙個值。以下例項的三個整數將儲存在指標陣列中:

package main

import "fmt"

const max int = 3

func main()

var i int

var ptr [max]*int;

for i = 0; i < max; i++

for i = 0; i < max; i++

}

以上**執行輸出結果為:

a[0] = 10

a[1] = 100

a[2] = 200

go 語言允許向函式傳遞指標,只需要在函式定義的引數上設定為指標型別即可。

以下例項演示了如何向函式傳遞指標,並在函式呼叫後修改函式內的值,:

package main

import "fmt"

func main()

func swap(x *int, y *int)

以上例項允許輸出結果為:

交換前 a 的值 : 100

交換前 b 的值 : 200

交換後 a 的值 : 200

交換後 b 的值 : 100

雪泥

157***[email protected]

以下是乙個更簡潔的變數交換例項:

package main

import "fmt"

func main()

/* 交換函式這樣寫更加簡潔,也是 go 語言的特性,可以用下,c++ 和 c# 是不能這麼幹的 */

func swap(x *int, y *int)

如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。

指向指標的指標變數宣告格式如下:

var ptr **int;
以上指向指標的指標變數為整型。

訪問指向指標的指標變數值需要使用兩個 * 號,如下所示:

package main

import "fmt"

func main()

以上例項執行輸出結果為:

變數 a = 3000

指標變數 *ptr = 3000

指向指標的指標變數 **pptr = 3000

Go語言學習筆記九 指標

指標的概念是當時學c語言時了解的。go語言的指標感覺與c語言的沒啥不同。指標變數是儲存記憶體位址的變數。其他變數儲存的是數值,而指標變數儲存的是記憶體位址。這個記憶體位址可能儲存者乙個基本數值。指標變數也是有型別的。它需要知道自己儲存的記憶體位址指向數值的型別,因為不同的數值型別占用的空間大小是不同...

Go核心開發學習筆記 五 指標

複雜資料型別 指標pointer 陣列array 結構體struct,替代class 管道channel 函式 也是一種函式型別 切片slice 介面inte ce map 類似hashmap,set 比較簡單不複雜,相當於別的語言中的map,僅有此。指標 凡是涉及引用都涉及指標 基本資料型別,變數...

C 學習筆記 四 指標(2)轉

分類 c 學習筆記 2010 04 03 14 11 283人閱讀 函式和函式指標 最近在看 寫 的人很喜歡用 函式和函式指標。一直覺得 函式和函式指標挺神秘的,所以查了一些資料,來與大家一起來分享。什麼是 函式 簡而言之,函式就是乙個通過函式指標呼叫的函式。如果你把函式的指標 位址 作為引數傳遞給...