Go語言學習第四課-go語言指標
阿新 • • 發佈:2018-12-10
看到指標不禁想起學C/C++指標時的恐怖,各種指標的加加減減,著實讓人頭大
go語言提供指標,但是相對於C/C++簡單的多。因為在Go語言中刪掉了指標運算部分,也就是不需要再對指標進行加加減減。
Go語言指標與引數傳遞
在定義函式後,一般都會向函式傳值。這樣就引入了兩種傳值方法,值傳遞和引用傳遞。
在c語言中,應該用過相應的傳遞方式。值傳遞傳入後,只是將傳遞的值進行一次拷貝。函式中無論對該變數進行操作。不會影響原值。但是引用傳遞(在傳遞值前加“&”),對該值得操作會改變傳入原值
在這裡著重要講的是,Go語言函式只有值傳遞。但是我們可以通過指標達到修改原值的目的。
以兩個數字交換為例加深理解。
package main
import "fmt"
func swap(a,b int) {
b,a = a,b
}
func swap2(a,b *int){
*b,*a = *a,*b
}
func main() {
//指標不能運算,
//Go語言只有值傳遞一種方式
a,b := 3,4
swap(a,b)
fmt.Println(a,b)
swap2(&a,&b)
fmt.Println(a,b)
}
Go語言空指標
當一個指標被定義後沒有分配到任何變數時,它的值為 nil。
nil 指標也稱為空指標。
nil在概念上和其它語言的null、None、nil、NULL一樣,都指代零值或空值。
一個指標變數通常縮寫為 ptr。
檢視以下例項:
package main
import "fmt"
func main() {
var ptr *int
fmt.Printf("ptr 的值為 : %x\n", ptr )
}
輸出結果為0
空指標判斷:
if(ptr != nil) /* ptr 不是空指標 */
if(ptr == nil) /* ptr 是空指標 */