go語言中普通函數(shù)與方法有什么區(qū)別

這篇文章主要介紹go語言中普通函數(shù)與方法有什么區(qū)別,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)海鹽,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

區(qū)別:對(duì)于普通函數(shù),接收者為值類型時(shí),不能將指針類型的數(shù)據(jù)直接傳遞,反之亦然;對(duì)于方法,接收者為值類型時(shí),可以直接用指針類型的變量調(diào)用方法,反過來同樣也可以。

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

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

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

以下為簡單示例:

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)用  
}

以上是“go語言中普通函數(shù)與方法有什么區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:go語言中普通函數(shù)與方法有什么區(qū)別
網(wǎng)站路徑:http://muchs.cn/article28/jpijcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、、網(wǎng)站導(dǎo)航定制開發(fā)、網(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í)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化