package main import "fmt" func main() { var a int =10 var p *int =&a //定義指針變量p,傳遞a的地址 //指針:指針就是地址,指針變量就是存儲地址的變量。 a=100 fmt.Println("a=",a) *p =200 //借助a變量的地址,操作a對應空間 fmt.Println("a=",a) fmt.Println("*p=",*p) fmt.Println("&a=",&a)//&獲取地址 0xc42001a0c0 fmt.Println("a=",a) //200 fmt.Println("p=",p) //0xc42001a0c0 fmt.Println("*p=",*p) //200 加×就是獲取值,解引用、間接引用 }
package main import ( "fmt" ) func test(m int) { var b int = 1000 b += m } /*func main() { var a int = 10 var p *int = &a a = 100 fmt.Println("a = ", a) test(10) *p = 250 // 借助a 變量的地址,操作a對應空間 fmt.Println("a = ", a) fmt.Println("*p = ", *p) a = 1000 fmt.Println("*p = ", *p) }*/ /*func test() { p := new(int) // 默認類型的 默認值 *p = 1000 } func main() { var a int = 10 fmt.Println("&a", &a) var p *int // 在 heap 上申請一片內存地址空間 fmt.Printf("%d\n", *p) fmt.Printf("%v\n", *p) // 打印Go語言格式的字符串。 }*/ func swap(a, b int) { a, b = b, a fmt.Println("swap a:", a, "b:", b) } func swap2(x, y *int) { *x, *y = *y, *x } func main() { a, b := 10, 20 swap2(&a, &b) // 傳地址值。 fmt.Println("swap2: main a:", a, "b:", b) }