您好,登錄后才能下訂單哦!
指針
1、簡(jiǎn)單的定義一個(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 //傳過(guò)去3,改為20,打印i還是3 說(shuō)明這種只是值拷貝并沒(méi)更改本身 now i: 20 //傳過(guò)去一個(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中沒(méi)有指針的運(yùn)算操作。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。