首页后端开发其他后端知识GO语言的函数和方法有何不同,表现在什么方面

GO语言的函数和方法有何不同,表现在什么方面

时间2024-03-27 06:58:04发布访客分类其他后端知识浏览313
导读:在这篇文章中,我们将学习“GO语言的函数和方法有何不同,表现在什么方面”的相关知识,下文有详细的介绍及示例,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望对大家阅读完这篇能有所获。 区别:对于普通函数,接收者为值类型时,不能将指针类...
在这篇文章中,我们将学习“GO语言的函数和方法有何不同,表现在什么方面”的相关知识,下文有详细的介绍及示例,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望对大家阅读完这篇能有所获。

区别:对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然;对于方法,接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。

本文操作环境:windows10系统、Go 1.11.2、thinkpad t480电脑。

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语言的函数和方法有何不同,表现在什么方面的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: GO语言的函数和方法有何不同,表现在什么方面
本文地址: https://pptw.com/jishu/654054.html
怎么用Storage Event来实现页面间通信的示例代码? go语言中new和make有哪些不一样的区别?

游客 回复需填写必要信息