go 語言中指標是很容易學習的,go 語言中使用指標可以更簡單的執行一些任務。
接下來讓我們來一步步學習 go 語言指標。
我們都知道,變數是一種使用方便的佔位符,用於引用計算機記憶體位址。
go 語言的取位址符是 &,放到乙個變數前使用就會返回相應變數的記憶體位址。
執行以上**輸出結果為:
現在我們已經了解了什麼是記憶體位址和如何去訪問它。接下來我們將具體介紹指標。
乙個指標變數指向了乙個值的記憶體位址。
類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下:
var var_name *var-typevar-type 為指標型別,var_name 為指標變數名,* 號用於指定變數是作為乙個指標。以下是有效的指標宣告:
var ip *int /* 指向整型*/本例中這是乙個指向 int 和 float32 的指標。var fp *float32 /* 指向浮點型 */
指標使用流程:
在指標型別前面加上 * 號(字首)來獲取指標所指向的內容。
以上例項執行輸出結果為:
a 變數的位址是: 20818a220當乙個指標被定義後沒有分配到任何變數時,它的值為 nil。*ip 變數的值: 20
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] = 10go 語言允許向函式傳遞指標,只需要在函式定義的引數上設定為指標型別即可。a[1] = 100
a[2] = 200
以下例項演示了如何向函式傳遞指標,並在函式呼叫後修改函式內的值,:
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人閱讀 函式和函式指標 最近在看 寫 的人很喜歡用 函式和函式指標。一直覺得 函式和函式指標挺神秘的,所以查了一些資料,來與大家一起來分享。什麼是 函式 簡而言之,函式就是乙個通過函式指標呼叫的函式。如果你把函式的指標 位址 作為引數傳遞給...