Go語(yǔ)言中,一個(gè)方法就是一個(gè)包含了接收者的函數(shù)。
對(duì)于結(jié)構(gòu)體方法,接收者可以是結(jié)構(gòu)體類型的值或是指針。
9.5.1 指針類型接收者當(dāng)接收者類型為指針時(shí),可以通過(guò)該方法改變?cè)摻邮照叩某蓡T變量值,即使你使用了非指針類型實(shí)例調(diào)用該函數(shù),也可以改變實(shí)例對(duì)應(yīng)的成員變量值。
在以下示例中,我們?yōu)閁ser結(jié)構(gòu)體創(chuàng)建了ChangeName方法,在該方法內(nèi)部將接收者的Name值修改為Tom,接收者的類型為指針類型:
[ 動(dòng)手寫9.5.1 ]
package main
import "fmt"
type User struct {Name string
Email string
}
func (u *User) ChangeName() {// 指針類型接收者
u.Name = "Tom"
}
func main() {u := &User{"Peter", "go@go.com"} // 創(chuàng)建指針類型結(jié)構(gòu)體實(shí)例
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
u.ChangeName()
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
}
運(yùn)行結(jié)果
只要結(jié)構(gòu)體方法的接收者為指針類型,即使實(shí)例不是指針類型,修改也能生效:
[ 動(dòng)手寫 9.5.2 ]
package main
import "fmt"
type User struct {Name string
Email string
}
func (u *User) ChangeName() {// 指針類型接收者
u.Name = "Tom"
}
func main() {u := User{"Peter", "go@go.com"} // 創(chuàng)建非指針類型結(jié)構(gòu)體實(shí)例
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
u.ChangeName()
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
}
運(yùn)行結(jié)果
9.5.2 值類型接收者當(dāng)接收者不是一個(gè)指針時(shí),該方法操作對(duì)應(yīng)接收者值的副本,否則即使你使用了指針調(diào)用函數(shù),也無(wú)法改變成員變量值。
[ 動(dòng)手寫 9.5.3]
package main
import "fmt"
type User struct {Name string
Email string
}
func (u User) ChangeName() {// 值類型接收者
u.Name = "Tom"
}
func main() {u := &User{"Peter", "go@go.com"} //創(chuàng)建指針類型結(jié)構(gòu)體實(shí)例
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
u.ChangeName()
fmt.Println("Name: ", u.Name, " Email: ", u.Email)
}
運(yùn)行結(jié)果
如果方法需要修改接收者,接收者必須是指針類型。一般約定的接收者命名是類型的一個(gè)或兩個(gè)字母的縮寫(如u或者us之于User)。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享文章:非零基礎(chǔ)自學(xué)Golang第9章結(jié)構(gòu)體9.5結(jié)構(gòu)體方法-創(chuàng)新互聯(lián)
本文來(lái)源:http://muchs.cn/article6/ceddog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容