3.5、Golang 指針
指針
- 取位址:
&
- 取值:
*
指針位址:每一個變量都有一個位址,位址代表變量在記憶體中的位置
Go語言中的值類型(int、float、bool、string、array、struct)
對應的指針類型(*int、*int64、*string)
指針變量定義文法
// 指針變量名 指針類型
var var_name *var_type
package main
import "fmt"
func main() {
// 聲明指針變量
var ip *int
fmt.Printf("%v\n", ip) // <nil>
fmt.Printf("%T\n", ip) // *int
// 聲明int變量
var i int = 10
// 取位址
ip = &i
fmt.Printf("%v\n", ip)
// 0xc0000ae010
// 取值
fmt.Printf("%v\n", *ip)
// 10
}
指向數組的指針
// 表示數組裡面的元素類型是指針類型
var ptr [MAX]*int;
package main
import "fmt"
func main() {
arr := [...]int{1, 2, 3}
var ptr [len(arr)]*int
fmt.Printf("%v\n", ptr)
// [<nil> <nil> <nil>]
for i := 0; i < len(arr); i++ {
ptr[i] = &arr[i]
}
fmt.Printf("%v\n", ptr)
// [0xc000022090 0xc000022098 0xc0000220a0]
for i := 0; i < len(ptr); i++ {
fmt.Printf("%v\t", *ptr[i])
}
// 1 2 3
}