變數是一種使用方便的佔位符,用於引用計算機記憶體位址(16進製制)。
go 語言的取位址符是 &,放到乙個變數前使用就會返回相應變數的記憶體位址。
package main什麼是指標:import "fmt"
func main()
//輸出結果:
乙個指標變數指向了乙個值的記憶體位址。
類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下:
var var_name *var-typear-type 為指標型別,var_name 為指標變數名,* 號用於指定變數是作為乙個指標。以下是有效的指標宣告
var ip *int /* 指向整型*/指標使用流程:var fp *float32 /* 指向浮點型 */
在指標型別前面加上 * 號(字首)來獲取指標所指向的內容。
package main當乙個指標被定義後沒有分配到任何變數時,它的值為 nil。import "fmt"
//指標宣告和賦值
func main()
//輸出結果:
a的值是 33
a的位址是: 0xc000014098
指標變數ip的值是: 0xc000014098
指標ip 指向的值: 33
nil 指標也稱為空指標。
nil在概念上和其它語言的null、none、nil、null一樣,都指代零值或空值。
乙個指標變數通常縮寫為 ptr。
package main空指標判斷:import "fmt"
func main()
//輸出結果:
ptr 的值為 : 0
if(ptr != nil) /* ptr 不是空指標 */if(ptr == nil) /* ptr 是空指標 */
package main示例:import "fmt"
func main() else
}//輸出結果:
空指標
package main有一種情況,我們可能需要儲存陣列,這樣我們就需要使用到指標。import "fmt"
func main()
for i := 0; i < len(a); i++
}//輸出結果:
a[0] = 10
a[1] = 100
a[2] = 200
以下宣告了整型指標陣列:
var ptr [max]*int;ptr 為整型指標陣列。因此每個元素都指向了乙個值。以下例項的三個整數將儲存在指標陣列中:
package main如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。import "fmt"
func main() //定義乙個實際陣列
for i := 0; i < len(a); i++
//使用指標變數指向值,進行遍歷
for j := 0; j < len(ptr); j++
}//輸出結果:
第0個元素的指標位址是:824633762152
第1個元素的指標位址是:824633762160
第2個元素的指標位址是:824633762168
a[0] = 10
a[1] = 100
a[2] = 200
指向指標的指標變數宣告格式如下:
var ptr **int;以上指向指標的指標變數為整型。
訪問指向指標的指標變數值需要使用兩個 * 號,如下所示:
package mainimport "fmt"
//指向指標的指標
func main()
//輸出結果:
a的值 1000
a的位址是 0xc000014098
指標ptr的值是(ptr): 0xc000014098
指標ptr指向的值(*ptr): 1000
指標pptr的值是(pptr): 0xc000006028
指標pptr指向的值(*pptr): 0xc000014098
指標pptr指向 指標ptr指向的值(**pptr): 1000
package maingo 語言允許向函式傳遞指標,只需要在函式定義的引數上設定為指標型別即可。import "fmt"
func main()
//輸出結果:
值 5
ptr指標指向位址對應的值 5
pts指標指向位址對應的值: 5
pto最終指向的位址對應的值(a) 5
pt3指向的指標(pto)所指向的指標的(ptr)位址 0xc000092010
pt3指向的指標(pto)所指向的指標(ptr)所指向的位址(a): 0xc00009a008
pt3最終指向的位址對應的值(a) 5
指標屬於引用型別。
以下例項演示了如何向函式傳遞指標,並在函式呼叫後修改函式內的值,:
package mainimport "fmt"
func main()
//定義兩個形參,型別是指標(&a,&b作為引數傳遞進入,因此,*x和&a是與同乙個記憶體位址關聯。*y與&b與同乙個記憶體位址關聯)
func swap(x, y *int)
//輸出結果:
交換前a=10,b=20
交換後a=20,b=10
package mainimport "fmt"
//實際值的傳遞
func main()
func swap(x, y int) (a, b int)
//輸出結果:
交換前a=10,b=20
swap裡x=20,y=10
交換後a=20,b=10
Go 語言指標
b 什麼是指標 b 乙個指標變數指向了乙個值的記憶體位址。類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下 var var name var type var type 為指標型別,var name 為指標變數名,號用於指定變數是作為乙個指標。以下是有效的指標宣告 var ip int...
GO語言指標
以前學習的語言裡沒有指標操作,剛接觸到go語言指標,消化的比較慢,故寫一下。指標型別宣告 t,指標的型別為 t,例 var i int 指標型別的值 t 在等號左邊表示指標宣告var a int 32 p a p的值是指向a的位址在指標前加 獲取指標p指向的值,例 var a int 32 變數宣告...
Go語言指標
鏈客,專為開發者而生,有問必答!接下來讓我們來一步步學習 go 語言指標。我們都知道,變數是一種使用方便的佔位符,用於引用計算機記憶體位址。go 語言的取位址符是 放到乙個變數前使用就會返回相應變數的記憶體位址。package mainimport fmt func main 以上例項執行輸出結果為...