【go語言學習筆記】指針

1.指針的基本操作

go語言中,指針的用法類似c語言,具體操作請看demo:

package main

import "fmt"

func main() {
	var a = 10
	fmt.Printf("a = %d\n", a)   //變量的值
	fmt.Printf("&a = %p\n", &a) //變量的地址

	// 保存某個變量的地址,需要指針類型,*int 保存int的地址, **int 保存 *int的地址
	var p *int
	p = &a //指針變量指向誰,就把誰的地址賦值給指針變量
	fmt.Printf("p = %v, &a = %v, *p = %v\n", p, &a, *p)

	*p = 666
	fmt.Println(*p)

}

2.new函數

這裏的new函數類似c++中的new關鍵字,可以分配對應大小的空間,並且無需考慮delete內存空間操作,因爲go語言配有垃圾回收機制。

package main
import "fmt"

func main() {
	var p *int

	//p是*int類型,指向int類型
	p = new(int) //go語言有垃圾回收機制,不需要管new出來的空間的生命週期等問題
	*p = 666
	fmt.Println(*P)
}


3.指針的錯誤用法

go語言對指針進行操作時需要指針有合法的指向,否則就算非法操作。go語言中表示空的關鍵字爲nil,類似c語言中的NULL

package main

import "fmt"

func main() {
	var p *int // 如果沒有指向,go語言默認初始化爲nil值,下面那句p = nil是不必要的
	p = nil    // go語言中沒有NULL,空值爲nil
	fmt.Println("p = ", p)

	// *p = 666 ; 錯誤,因爲p沒有合法指向

	//正確操作
	var a int
	p = &a
	*p = 666
	fmt.Println(*p)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章