国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言中普通函數與方法的區別分析

2020-04-01 19:22:01
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Go語言中普通函數與方法的區別,以實例形式對比分析了普通函數與方法使用時的區別與相關技巧,需要的朋友可以參考下
 

本文實例分析了Go語言中普通函數與方法的區別。分享給大家供大家參考。具體分析如下:

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

2.對于方法(如struct的方法),接收者為值類型時,可以直接用指針類型的變量調用方法,反過來同樣也可以。

以下為簡單示例:

 

復制代碼代碼如下:
package structTest  
  
//普通函數與方法的區別(在接收者分別為值類型和指針類型的時候)  
//Date:2014-4-3 10:00:07  
  
import (  
    "fmt"  
)  
  
func StructTest06Base() {  
    structTest0601()  
    structTest0602()  
}  
  
//1.普通函數  
//接收值類型參數的函數  
func valueIntTest(a int) int {  
    return a + 10  
}  
  
//接收指針類型參數的函數  
func pointerIntTest(a *int) int {  
    return *a + 10  
}  
  
func structTest0601() {  
    a := 2  
    fmt.Println("valueIntTest:", valueIntTest(a))  
    //函數的參數為值類型,則不能直接將指針作為參數傳遞  
    //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))  
    //同樣,當函數的參數為指針類型時,也不能直接將值類型作為參數傳遞  
    //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() {  
    //值類型調用方法  
    personValue := PersonD{101, "Will Smith"}  
    personValue.valueShowName()  
    personValue.pointShowName()  
  
    //指針類型調用方法  
    personPointer := &PersonD{102, "Paul Tony"}  
    personPointer.valueShowName()  
    personPointer.pointShowName()  
  
    //與普通函數不同,接收者為指針類型和值類型的方法,指針類型和值類型的變量均可相互調用  
}

 

希望本文所述對大家的Go語言程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀宁县| 兰州市| 浦北县| 武乡县| 团风县| 南京市| 聂拉木县| 毕节市| 辽源市| 阳信县| 嘉兴市| 湄潭县| 巴楚县| 甘孜县| 保靖县| 新干县| 图片| 肇庆市| 太保市| 彩票| 壤塘县| 阿图什市| 马龙县| 芜湖县| 旬邑县| 尼勒克县| 九寨沟县| 浮梁县| 上饶县| 娱乐| 博野县| 当涂县| 阿图什市| 绥化市| 唐河县| 襄汾县| 萨迦县| 丰顺县| 莎车县| 满城县| 金川县|