源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Go语言中普通函数与方法的区别分析

  • 时间:2021-02-07 06:11 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Go语言中普通函数与方法的区别分析
本文实例分析了Go语言中普通函数与方法的区别。分享给大家供大家参考。具体分析如下: 1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。 2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。 以下为简单示例:
[u]复制代码[/u] 代码如下:
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语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部