指針
1、簡單的定義一個(gè)指針
package main import "fmt" func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) } //執(zhí)行結(jié)果: memory address i: 0xc42000a2e0
2、打印指針的值
package main import "fmt" func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) fmt.Println(*p) } //執(zhí)行結(jié)果: memory address i: 0xc42000a2e0 2
3、指針賦值
package main import "fmt" func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) fmt.Println(*p) *p = 3 fmt.Println(*p) fmt.Println(i) } //執(zhí)行結(jié)果: memory address i: 0xc42000a2e0 2 3 3 //我們發(fā)現(xiàn)*p 和 i的值都變了,因?yàn)橹羔樀刂肥且粋€(gè)。
4、指針值拷貝與指針值更改
package main import "fmt" func changValue(x int){ x = 20 } func changValueNow(x *int){ *x = 20 } func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) fmt.Println("memory address p:",&i) fmt.Println(*p) *p = 3 fmt.Println(*p) fmt.Println(i) changValue(i) fmt.Println("i =",i) changValueNow(&i) fmt.Println("now i:",i) } //執(zhí)行結(jié)果: memory address i: 0xc42000a2e0 memory address p: 0xc42000a2e0 2 3 3 i = 3 //傳過去3,改為20,打印i還是3 說明這種只是值拷貝并沒更改本身 now i: 20 //傳過去一個(gè)指針地址,將地址值改為20,打印i是20,傳遞指針內(nèi)存地址修改將改變指針的值。
5、指針申明
package main import "fmt" func changValue(x int){ x = 20 } func changValueNow(x *int){ *x = 20 } func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) fmt.Println("memory address p:",&i) fmt.Println(*p) *p = 3 fmt.Println(*p) fmt.Println(i) changValue(i) fmt.Println("i =",i) changValueNow(&i) fmt.Println("now i:",i) pj := new(int) //使用new 創(chuàng)建一個(gè)int型的指針 changValueNow(pj) fmt.Println("pj = ",*pj) } //執(zhí)行結(jié)果: memory address i: 0xc42000a2e0 memory address p: 0xc42000a2e0 2 3 3 i = 3 now i: 20 pj = 20
6、golang中沒有指針的運(yùn)算操作。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。