非零基礎(chǔ)自學(xué)Golang第9章結(jié)構(gòu)體9.5結(jié)構(gòu)體方法-創(chuàng)新互聯(lián)

非零基礎(chǔ)自學(xué)Golang

成都創(chuàng)新互聯(lián)長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為濟(jì)水街道企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),濟(jì)水街道網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。文章目錄
      • 非零基礎(chǔ)自學(xué)Golang
      • 第9章 結(jié)構(gòu)體
        • 9.5 結(jié)構(gòu)體方法
          • 9.5.1 指針類型接收者
          • 9.5.2 值類型接收者

第9章 結(jié)構(gòu)體 9.5 結(jié)構(gòu)體方法

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)

h5響應(yīng)式網(wǎng)站建設(shè)