【golang - 關鍵詞】指針、引用、new、&

1. 指針

1.1 指針特性

golang不支持指針運算,保證內存安全
golang有自己的垃圾回收,所以指針沒有顯示調用摧毀函數
空指針當一個指針被定義後沒有分配到任何變量時,它的值爲 nil。
nil指針也稱爲空指針。nil在概念上和其它語言的null、None、nil、NULL一樣,都指代零值或空值。

1.2 new和&

new和&均可獲取地址,也就是指針
person1 := new(Person)//使用new創建一個person2對象,同時獲得person的指針
person2 := &Person{"lisi","man",25}//使用&創建一個person3對象,同時獲得person的指針

1.3 結構體指針

type Person struct {
   name string
   sex  string
   age int
}
func main() {
   person1 := Person{"zhangsan","man",25} //創建一個person1對象
   fmt.Printf("person1:%v\n",person1)
   demo(&person1)
   fmt.Printf("person1:%v\n",person1)
}

func demo(person *Person)  {
   (*person).age = 18 //**顯示的解引用**
   person.name = "GoLang" //**隱式的解引用**
}

2. 值類型,引用類型

2.1 值類型

值傳遞類型:布爾變量、數值類型、字符串類型、數組
值在傳遞給函數或者方法時會被複制一份,然後方法或函數使用的是複製的這份值,也就不會對原值產生什麼影響。

2.2 引用類型

引用類型:映射(map),數組切片(slice),通道(channel),方法與函數。

2.3 golang字符串

golang字符串除了函數傳遞是值拷貝以外,字符串修改操作,也是值拷貝出來的,所以golang字符串有個特點,初始化後永不可變。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章