Go:對象選擇器自動解引用是什么?
作者: 寫代碼的明哥
從一個結(jié)構(gòu)體實例對象中獲取字段的值,通常都是使用 . 這個操作符,該操作符叫做 選擇器。選擇器有一個妙用,可能大多數(shù)人都不清楚。
從一個結(jié)構(gòu)體實例對象中獲取字段的值,通常都是使用 . 這個操作符,該操作符叫做 選擇器。
選擇器有一個妙用,可能大多數(shù)人都不清楚。
當(dāng)你對象是結(jié)構(gòu)體對象的指針時,你想要獲取字段屬性時,按照常規(guī)理解應(yīng)該這么做
- type Profile struct {
- Name string
- }
- func main() {
- p1 := &Profile{"iswbm"}
- fmt.Println((*p1).Name) // output: iswbm
- }
但還有一個更簡潔的做法,可以直接省去 * 取值的操作,選擇器 . 會直接解引用,示例如下
- type Profile struct {
- Name string
- }
- func main() {
- p1 := &Profile{"iswbm"}
- fmt.Println(p1.Name) // output: iswbm
- }
也正是這個原因,因此在給你一個方法指定定一個接收者的時候,訪問接收者的對象時,不需要像下面這樣顯示的解引用
- type Person struct {
- name string
- }
- func (p *Person) Say() {
- fmt.Println((*p).name)
- }
而可以直接這樣寫
- type Person struct {
- name string
- }
- func (p *Person) Say() {
- fmt.Println(p.name)
- }
是不是很簡單?跟著明哥一起來攻克 Go 的各個邊邊角角的知識吧
責(zé)任編輯:武曉燕
來源:
Go編程時光