GO語(yǔ)言中的方法值和方法表達(dá)式的使用方法詳解

Go語(yǔ)言也稱(chēng) Golang,兼具效率、性能、安全、健壯等特性。

企業(yè)官網(wǎng)是企業(yè)形象的一張重要名片。創(chuàng)新互聯(lián)的成都官網(wǎng)定制服務(wù),能夠?qū)⒊啥季W(wǎng)頁(yè)設(shè)計(jì)與企業(yè)的實(shí)力&公信力、產(chǎn)品服務(wù)優(yōu)勢(shì)、文化價(jià)值觀等有機(jī)結(jié)合,把握企業(yè)的獨(dú)特之處,突出重點(diǎn)核心內(nèi)容,并以恰如其分的設(shè)計(jì)風(fēng)格,抓住目標(biāo)用戶的關(guān)注點(diǎn)和興趣點(diǎn),幫助企業(yè)塑造好第一印象,成都全網(wǎng)營(yíng)銷(xiāo)展現(xiàn)公司實(shí)力。成都官網(wǎng)定制,為你解決成都創(chuàng)新互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案。

Go語(yǔ)言從底層原生支持并發(fā),無(wú)須第三方庫(kù)、開(kāi)發(fā)者的編程技巧和開(kāi)發(fā)經(jīng)驗(yàn)就可以輕松搞定。本文重點(diǎn)給大家介紹go 方法值和方法表達(dá)式的知識(shí)。

手冊(cè)上關(guān)于這塊的解釋感覺(jué)不是很詳細(xì)清晰,經(jīng)過(guò)幾個(gè)示例自己總結(jié)了下這塊的用法。

方法表達(dá)式:說(shuō)簡(jiǎn)單點(diǎn),其實(shí)就是方法對(duì)象賦值給變量。

這里有兩種使用方式:

1)方法值:隱式調(diào)用, struct實(shí)例獲取方法對(duì)象

2)  方法表達(dá)式:顯示調(diào)用, struct類(lèi)型獲取方法對(duì)象, 需要傳遞struct實(shí)例對(duì)象作為參數(shù)。

舉個(gè)例子:

package main
import (
 "fmt"
)
type Student struct {
 id int
 name string
}
func (s *Student) SkillPointer() {
 fmt.Printf("指針型函數(shù):%p, %v\n", s, s)
}
func (s Student) SkillValue() {
 fmt.Printf("值類(lèi)型函數(shù): %p, %v\n", &s, s)
}
func main() {
 s := Student{1, "喬幫主"} // 結(jié)構(gòu)體實(shí)例化
 //常規(guī)使用方式
 s.SkillPointer()
 fmt.Println(".............................\n")
 //方法表達(dá)式
 sFunc1 := (*Student).SkillPointer //注意這里直接使用 指針型結(jié)構(gòu)體名稱(chēng).方法
 sFunc1(&s)      //顯示的把接收者*Student傳遞過(guò)去
 sFunc2 := Student.SkillValue //注意這里直接使用 結(jié)構(gòu)體名稱(chēng).方法
 sFunc2(s)     //顯示的把接收者Student傳遞過(guò)去
 fmt.Println(".............................\n")
 //方法值
 sFunc3 := s.SkillPointer //這個(gè)就是方法值,調(diào)用函數(shù)時(shí),無(wú)需再傳遞接收者,隱藏了接收者
 sFunc3()     // 是不是 有點(diǎn)像匿名函數(shù)調(diào)用,聲明了變量sFunc3 為結(jié)構(gòu)體的方法名,然后變量()調(diào)用。有點(diǎn)多此一舉的感覺(jué)毛?
 sFunc4 := s.SkillValue //因?yàn)闆](méi)有調(diào)用指針?lè)椒?,這里完成內(nèi)容拷貝的操作,區(qū)別在哪里,稍后會(huì)舉例看到
 sFunc4()
 fmt.Println(".............................\n")
}

輸出:

指針型函數(shù):0xc00007c060, &{1 喬幫主}
.............................
指針型函數(shù):0xc00007c060, &{1 喬幫主}
值類(lèi)型函數(shù): 0xc00007c0e0, {1 喬幫主}
.............................
指針型函數(shù):0xc00007c060, &{1 喬幫主}
值類(lèi)型函數(shù): 0xc00007c140, {1 喬幫主}
.............................

剛才說(shuō)的方法值得方式是拷貝,有啥區(qū)別,接下來(lái)我們看看:

package main
import (
 "fmt"
)
type Student struct {
 id int
 name string
}
func (s *Student) SkillPointer() {
 fmt.Printf("指針型函數(shù):%p, %v\n", s, s)
}
func (s Student) SkillValue() {
 fmt.Printf("值類(lèi)型函數(shù): %p, %v\n", &s, s)
}
func main() {
 u := Student{1, "喬幫主"}
 mValue := u.SkillValue // 因?yàn)椴皇侵羔橆?lèi)型,不受下面修改的影響。
 u.id, u.name = 2, "鳩摩智"
 u.SkillValue()
 mValue() // 值未變,不受影響
}

輸出:

值類(lèi)型函數(shù): 0xc0000044c0, {2 鳩摩智}
值類(lèi)型函數(shù): 0xc000004520, {1 喬幫主}
如果要全部更新,換成 mValue := u.SkillPointer  指針型函數(shù)即可。

無(wú)論從事什么行業(yè),只要做好兩件事就夠了,一個(gè)是你的專(zhuān)業(yè)、一個(gè)是你的人品,專(zhuān)業(yè)決定了你的存在,人品決定了你的人脈,剩下的就是堅(jiān)持,用善良專(zhuān)業(yè)和真誠(chéng)贏取更多的信任。

總結(jié)

到此這篇關(guān)于GO語(yǔ)言中的方法值和方法表達(dá)式的使用方法詳解的文章就介紹到這了,更多相關(guān)go 方法值和方法表達(dá)式內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

新聞標(biāo)題:GO語(yǔ)言中的方法值和方法表達(dá)式的使用方法詳解
文章網(wǎng)址:http://www.muchs.cn/article14/geesge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站改版品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、外貿(mào)建站、商城網(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)

成都app開(kāi)發(fā)公司