您好,登錄后才能下訂單哦!
指針
1、簡單的定義一個指針
package main import "fmt" func main(){ var p *int i :=2 p = &i fmt.Println("memory address i:",p) } //執行結果: 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) } //執行結果: 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) } //執行結果: memory address i: 0xc42000a2e0 2 3 3 //我們發現*p 和 i的值都變了,因為指針地址是一個。
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) } //執行結果: memory address i: 0xc42000a2e0 memory address p: 0xc42000a2e0 2 3 3 i = 3 //傳過去3,改為20,打印i還是3 說明這種只是值拷貝并沒更改本身 now i: 20 //傳過去一個指針地址,將地址值改為20,打印i是20,傳遞指針內存地址修改將改變指針的值。
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 創建一個int型的指針 changValueNow(pj) fmt.Println("pj = ",*pj) } //執行結果: memory address i: 0xc42000a2e0 memory address p: 0xc42000a2e0 2 3 3 i = 3 now i: 20 pj = 20
6、golang中沒有指針的運算操作。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。