指針的概念是當時學C語言時瞭解的。Go語言的指針感受與C語言的沒啥不一樣。學習
指針變量是保存內存地址的變量。其餘變量保存的是數值,而指針變量保存的是內存地址。這個內存地址可能保存者一個基本數值。
指針變量也是有類型的。它須要知道本身保存的內存地址指向數值的類型,由於不一樣的數值類型佔用的空間大小是不一樣的。指針
在指針中有兩個重要的符號須要瞭解: &和。 其中&是用於獲取普通變量的地址,而是獲取內存地址指向的數值。看起來就是一對反向操做。
另外在聲明指針時也要用到,因此在變量聲明的時候只是定義指針變量,並非獲取內存地址指向的數值。code
package main import "fmt" func main() { var ptr1 *int var ptr2 *float32 var a int = 10 ptr1 = &a; fmt.Printf("a變量的地址: %x\n", &a); fmt.Printf("ptr1變量保存的地址: %x\n", ptr1); fmt.Printf("ptr1變量地址指向的值: %d\n", *ptr1) fmt.Printf("ptr2變量的值: %x\n", ptr2) }
當一個指針被定義後,沒有賦值時,它的值爲nil。內存
nil指針被稱爲空指針。import
空指針的判斷變量
if (ptr != nil) if (ptr == nil)