主頁(yè) > 知識(shí)庫(kù) > Go語(yǔ)言中普通函數(shù)與方法的區(qū)別分析

Go語(yǔ)言中普通函數(shù)與方法的區(qū)別分析

熱門標(biāo)簽:海外照相館地圖標(biāo)注入駐 滁州自建外呼系統(tǒng) 旅游廁所如何電子地圖標(biāo)注 外呼系統(tǒng)多少錢一年 經(jīng)常接到推銷電話機(jī)器人的電話 工商信用卡外呼系統(tǒng)教程 外呼系統(tǒng)如何接收服務(wù)密碼 客服級(jí)電銷機(jī)器人 智能營(yíng)銷軟件

本文實(shí)例分析了Go語(yǔ)言中普通函數(shù)與方法的區(qū)別。分享給大家供大家參考。具體分析如下:

1.對(duì)于普通函數(shù),接收者為值類型時(shí),不能將指針類型的數(shù)據(jù)直接傳遞,反之亦然。

2.對(duì)于方法(如struct的方法),接收者為值類型時(shí),可以直接用指針類型的變量調(diào)用方法,反過(guò)來(lái)同樣也可以。

以下為簡(jiǎn)單示例:

復(fù)制代碼 代碼如下:
package structTest 
 
//普通函數(shù)與方法的區(qū)別(在接收者分別為值類型和指針類型的時(shí)候) 
//Date:2014-4-3 10:00:07 
 
import ( 
    "fmt" 

 
func StructTest06Base() { 
    structTest0601() 
    structTest0602() 

 
//1.普通函數(shù) 
//接收值類型參數(shù)的函數(shù) 
func valueIntTest(a int) int { 
    return a + 10 

 
//接收指針類型參數(shù)的函數(shù) 
func pointerIntTest(a *int) int { 
    return *a + 10 

 
func structTest0601() { 
    a := 2 
    fmt.Println("valueIntTest:", valueIntTest(a)) 
    //函數(shù)的參數(shù)為值類型,則不能直接將指針作為參數(shù)傳遞 
    //fmt.Println("valueIntTest:", valueIntTest(a)) 
    //compile error: cannot use a (type *int) as type int in function argument 
 
    b := 5 
    fmt.Println("pointerIntTest:", pointerIntTest(b)) 
    //同樣,當(dāng)函數(shù)的參數(shù)為指針類型時(shí),也不能直接將值類型作為參數(shù)傳遞 
    //fmt.Println("pointerIntTest:", pointerIntTest(b)) 
    //compile error:cannot use b (type int) as type *int in function argument 

 
//2.方法 
type PersonD struct { 
    id   int 
    name string 

 
//接收者為值類型 
func (p PersonD) valueShowName() { 
    fmt.Println(p.name) 

 
//接收者為指針類型 
func (p *PersonD) pointShowName() { 
    fmt.Println(p.name) 

 
func structTest0602() { 
    //值類型調(diào)用方法 
    personValue := PersonD{101, "Will Smith"} 
    personValue.valueShowName() 
    personValue.pointShowName() 
 
    //指針類型調(diào)用方法 
    personPointer := PersonD{102, "Paul Tony"} 
    personPointer.valueShowName() 
    personPointer.pointShowName() 
 
    //與普通函數(shù)不同,接收者為指針類型和值類型的方法,指針類型和值類型的變量均可相互調(diào)用 
}

希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Go語(yǔ)言中append函數(shù)用法分析
  • GO語(yǔ)言延遲函數(shù)defer用法分析
  • Go語(yǔ)言的os包中常用函數(shù)初步歸納
  • Go語(yǔ)言常見(jiàn)哈希函數(shù)的使用
  • 舉例講解Go語(yǔ)言中函數(shù)的閉包使用
  • Go語(yǔ)言里的new函數(shù)用法分析
  • Golang的os標(biāo)準(zhǔn)庫(kù)中常用函數(shù)的整理介紹
  • 深入解析golang編程中函數(shù)的用法
  • Golang學(xué)習(xí)筆記(五):函數(shù)
  • Golang教程之不可重入函數(shù)的實(shí)現(xiàn)方法

標(biāo)簽:深圳 湘潭 運(yùn)城 本溪 九江 喀什 晉城 楚雄

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語(yǔ)言中普通函數(shù)與方法的區(qū)別分析》,本文關(guān)鍵詞  語(yǔ),言中,普通,函數(shù),與,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go語(yǔ)言中普通函數(shù)與方法的區(qū)別分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Go語(yǔ)言中普通函數(shù)與方法的區(qū)別分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章