最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年02月27日 09:54:04   作者:周伯通的麥田  
這篇文章主要介紹了GO的方法值和方法表達(dá)式的使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

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類型獲取方法對(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("值類型函數(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)體名稱.方法
 sFunc1(&s)      //顯示的把接收者*Student傳遞過(guò)去
 sFunc2 := Student.SkillValue //注意這里直接使用 結(jié)構(gòu)體名稱.方法
 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 喬幫主}
值類型函數(shù): 0xc00007c0e0, {1 喬幫主}
.............................
指針型函數(shù):0xc00007c060, &{1 喬幫主}
值類型函數(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("值類型函數(shù): %p, %v\n", &s, s)
}
func main() {
 u := Student{1, "喬幫主"}
 mValue := u.SkillValue // 因?yàn)椴皇侵羔橆愋?,不受下面修改的影響?
 u.id, u.name = 2, "鳩摩智"
 u.SkillValue()
 mValue() // 值未變,不受影響
}

輸出:

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

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

總結(jié)

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

相關(guān)文章

  • 源碼分析Go語(yǔ)言使用cgo導(dǎo)致線程增長(zhǎng)的原因

    源碼分析Go語(yǔ)言使用cgo導(dǎo)致線程增長(zhǎng)的原因

    這篇文章主要從一個(gè)cgo調(diào)用開(kāi)始解析Go語(yǔ)言源碼,從而分析一下造成線程增長(zhǎng)的原因,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一學(xué)習(xí)一下
    2023-06-06
  • go按行讀取文件的三種實(shí)現(xiàn)方式匯總

    go按行讀取文件的三種實(shí)現(xiàn)方式匯總

    最近有遇到需要用go讀取文件的情況,下面這篇文章主要給大家介紹了關(guān)于go按行讀取文件的三種實(shí)現(xiàn)方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Golang使用ReverseProxy實(shí)現(xiàn)反向代理的方法

    Golang使用ReverseProxy實(shí)現(xiàn)反向代理的方法

    本文介紹了如何使用Golang的ReverseProxy實(shí)現(xiàn)反向代理,包括源碼結(jié)構(gòu)解析和官方單機(jī)示例NewSingleHostReverseProxy,同時(shí)指出,若要實(shí)現(xiàn)負(fù)載均衡,需要自行開(kāi)發(fā),還提供了一個(gè)簡(jiǎn)單的HTTP服務(wù)用于測(cè)試,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Go?語(yǔ)言入門之Go?計(jì)時(shí)器介紹

    Go?語(yǔ)言入門之Go?計(jì)時(shí)器介紹

    這篇文章主要介紹了Go?語(yǔ)言入門之Go?計(jì)時(shí)器,文章基于GO語(yǔ)言的相關(guān)資料展開(kāi)對(duì)其中計(jì)時(shí)器的詳細(xì)內(nèi)容。具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 基于微服務(wù)框架go-micro開(kāi)發(fā)gRPC應(yīng)用程序

    基于微服務(wù)框架go-micro開(kāi)發(fā)gRPC應(yīng)用程序

    這篇文章介紹了基于微服務(wù)框架go-micro開(kāi)發(fā)gRPC應(yīng)用程序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Go語(yǔ)言sync.Cond使用方法詳解

    Go語(yǔ)言sync.Cond使用方法詳解

    Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中還包含條件變量 sync.Cond,它可以讓一組 Goroutine 都在滿足特定條件時(shí)被喚醒,每一個(gè)sync.Cond結(jié)構(gòu)體在初始化時(shí)都需要傳入一個(gè)互斥鎖,接下來(lái)我們將通過(guò)文中例子了解它的使用方法,感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-07-07
  • 詳解Go語(yǔ)言如何實(shí)現(xiàn)字符串切片反轉(zhuǎn)函數(shù)

    詳解Go語(yǔ)言如何實(shí)現(xiàn)字符串切片反轉(zhuǎn)函數(shù)

    Go?語(yǔ)言不像其他語(yǔ)言如?Python,有著內(nèi)置的?reverse()?函數(shù),本文將先學(xué)習(xí)一下Python中對(duì)于列表的反轉(zhuǎn)方法,然后再學(xué)習(xí)如果在Go語(yǔ)言中實(shí)現(xiàn)相同的功能,感興趣的小伙伴快跟隨小編一起來(lái)學(xué)習(xí)一下
    2022-10-10
  • golang字符串轉(zhuǎn)64位整數(shù)的示例代碼

    golang字符串轉(zhuǎn)64位整數(shù)的示例代碼

    這篇文章主要介紹了golang字符串轉(zhuǎn)64位整數(shù),在Go語(yǔ)言中,可以使用strconv包中的ParseInt函數(shù)將字符串轉(zhuǎn)換為64位整數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • GO 語(yǔ)言學(xué)習(xí)指南

    GO 語(yǔ)言學(xué)習(xí)指南

    這篇文章主要介紹了GO 語(yǔ)言學(xué)習(xí)指南,介紹的相當(dāng)全面,有需要的小伙伴參考下吧。
    2015-01-01
  • golang環(huán)形隊(duì)列實(shí)現(xiàn)代碼示例

    golang環(huán)形隊(duì)列實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了golang環(huán)形隊(duì)列實(shí)現(xiàn)代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

剑川县| 凤山县| 应用必备| 黔西县| 景谷| 亳州市| 邛崃市| 安多县| 五台县| 延庆县| 札达县| 沽源县| 吐鲁番市| 嘉定区| 灵石县| 班玛县| 邵阳市| 双城市| 陇南市| 扶风县| 桐城市| 平乡县| 中江县| 湘潭市| 宣武区| 页游| 漯河市| 乌苏市| 东兰县| 涞水县| 邵阳市| 图木舒克市| 新郑市| 彭阳县| 绥滨县| 天等县| 疏勒县| 舒兰市| 新野县| 习水县| 华阴市|