go 語言中指標是很容易學習的,go 語言中使用指標可以更簡單的執行一些任務。
接下來讓我們來一步步學習 go 語言指標。
我們都知道,變數是一種使用方便的佔位符,用於引用計算機記憶體位址。
go 語言的取位址符是 &,放到乙個變數前使用就會返回相應變數的記憶體位址。
package main執行以上**輸出結果為:import "fmt"
func main()
現在我們已經了解了什麼是記憶體位址和如何去反問它。接下來我們將具體介紹指標。
乙個指標變數可以指向任何乙個值的記憶體位址它指向那個值的記憶體位址。
類似於變數和常量,在使用指標前你需要宣告指標。指標宣告格式如下:
var var_name *var-typevar-type 為指標型別,var_name 為指標變數名,* 號用於指定變數是作為乙個指標。以下是有效的指標宣告:
var ip *int /* 指向整型*/本例中這是乙個指向 int 和 float32 的指標。var fp *float32 /* 指向浮點型 */
指標使用流程:
在指標型別前面加上 * 號(字首)來獲取指標所指向的內容。
package main以上例項執行輸出結果為:import "fmt"
func main()
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] = 10如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。a[1] = 100
a[2] = 200
指向指標的指標變數宣告格式如下:
var ptr **int;以上指向指標的指標變數為整型。
訪問指向指標的指標變數值需要使用兩個 * 號,如下所示:
package main以上例項執行輸出結果為:import "fmt"
func main()
變數 a = 3000go 語言允許向函式傳遞指標,志需要在函式定義的引數上設定為指標型別即可。指標變數 *ptr = 3000
指向指標的指標變數 **pptr = 3000
以下例項演示了如何向函式傳遞指標,並在函式呼叫後修改函式內的值,:
package main以上例項允許輸出結果為:import "fmt"
func main()
func swap(x *int, y *int)
交換前 a 的值 : 100交換前 b 的值 : 200
交換後 a 的值 : 200
交換後 b 的值 : 100
GO語言學習 指標
指標 var str hello p str fmt.println p 輸出 0xc0000881e0實現的操作就是 把變數str的記憶體位址 放入到p變數中 指標取值var str hello p str z p fmt.println z 輸出 hellodemo func main func...
Go語言學習筆記九 指標
指標的概念是當時學c語言時了解的。go語言的指標感覺與c語言的沒啥不同。指標變數是儲存記憶體位址的變數。其他變數儲存的是數值,而指標變數儲存的是記憶體位址。這個記憶體位址可能儲存者乙個基本數值。指標變數也是有型別的。它需要知道自己儲存的記憶體位址指向數值的型別,因為不同的數值型別占用的空間大小是不同...
GO語言學習
sudo apt get install golang但是用ubuntu的庫安裝有幾個不好的地方 因此建議不要使用ubuntu的庫安裝golang環境 golang社群的安裝指導 wget tar c usr local zxf go1.6.2.linux amd64.tar.gz設定環境變數,修改...