這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
先記錄代碼
package mainimport "fmt"/*聲明指標*T 是指向類型T的值的指標變數的類型*/func main() { //b := 255 //var a *int = &b // a是int指標,指向b的記憶體位址 //fmt.Printf("Type of is:%T\n", a) //fmt.Println("address of b is", a) // //a := 22 //var b *int //b 這個變數是int類型的指標變數,變數的值,也只能是int型指標 //if b == nil { // // 指標的零值是nil // fmt.Println("b is", b) // b = &a // fmt.Println("b after initialization is", b) //} //b := 255 //a := &b //fmt.Println("address of b is", a)//列印b的記憶體位址 //fmt.Println("value of b is", *a)//列印b的值,可以通過*a指標 //b := 255 //a := &b //fmt.Println("address of b is:", a) //b的記憶體位址 //fmt.Println("value of b is:", *a) //*a++ //通過a的指標加一 //fmt.Println("new value of b is:", b) //a := 58 //fmt.Println("value of a befor func call is:", a) //b := &a //change(b) //指標變數b,改變a的值,a=55, //fmt.Println("value of a after call is:", a) /* 不要將指向數組的指標,作為參數傳遞給函數,改用切片 */ //a := [3]int{89, 90, 91} //modify(&a) //傳遞數組a的地址,給modify //fmt.Println(a) a := [3]int{89, 90, 91} modify(a[:]) //傳入一個a的切片 fmt.Println(a)}//函數傳遞指標,改變參數的記憶體位址。//func change(val *int) {// *val = 55//修改數組的值//傳遞指向數組的指標,作為參數,並且對其修改//func modify(arr *[3]int) {// (*arr)[0] = 90// //arr[0]=90 //也可以這麼寫,這是上面的簡寫形式(*a)[X]可以寫成a[X]//}//切片方式修改函數//這個方法是修改函數最常用的,最好的方法。。。。。。。。。。。。func modify(sls []int) { sls[0] = 91}//Go不支援如同C的指標運算