//基礎型別指標
var ps *string
var pi *int
var pf *float64
var pb *bool
//結構體指標
type person struct
var pperson *person
在把指標使用的得心應手之前,首先要熟悉go語言中這兩個操作符:*與&。
先說說&。&變數名,表示對變數取位址。&可以理解為乙個方法簡寫,這個方法的唯一引數是變數名,返回值是乙個記憶體位址(即乙個指標型別變數)。&的使用如下:
//先定義指標
var ps *string
//再定義變數
var s string
s = "i am string"
//通過&操作符取s的記憶體位址,位址儲存到指標ps中
ps = &s
fmt.printf("value of s:%s\n",s)
fmt.printf("value of ps:%v\n",ps)
以上**的執行結果:
value of s:i am string需要注意的一點就是指標與變數必須是同型別的。你不能把乙個int型別的變數位址賦給乙個string型別的指標。value of ps:0xc42007a1c0
再來說說*。*在指標的使用中有兩個角色:
其一,作為指標型別的定義符,本文開篇就用到了
其二,與&符做相反操作,&變數名是對變數取位址,而*指標名則是對指標位址取其儲存的內容。同樣可以理解*是乙個方法的簡寫,此方法唯一引數是乙個指標型別變數(也就是乙個記憶體位址),返回值是這個位址儲存的變數真實值。接上段**:
fmt.printf("ps point to:%s\n",*ps)
輸出:
ps point to:i am string
Golang教程 指標
指標是儲存乙個變數的記憶體位址的變數。在上圖中,變數b的值是156,儲存在位址為0x1040a124的記憶體中。變數a儲存了變數b的位址。現在可以說a指向b。乙個指標變數指向了乙個值的記憶體位址。類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下 var var name var typ...
golang 指標與記憶體
go指標 1.go指標提供了控制資料結構的指標的能力,但不能進行指標運算,go語言允許控制特定集合的資料結構,分配的數量以及記憶體訪問模式。2.預設值 nil,沒有 null 常量 3.不支援指標運算,不 支援 運算子,直接 用 訪問目標成員 4.go語言的取位址符是 放入乙個變數前使用就會返回相應...
golang 指標傳參
函式指標 是指向函式的指標變數,即本質是乙個指標變數。指標函式 本質是乙個函式。函式返回型別是某一型別的指標。package main import fmt func main 1.定義乙個函式,求兩個數的和 該函式的型別 func int,int int func add a,b int int ...