首页 > 其他分享 >关于Golang中函数的接收者不同对接口的使用的影响理解

关于Golang中函数的接收者不同对接口的使用的影响理解

时间:2024-02-22 11:33:05浏览次数:26  
标签:调用 对接口 接收者 接口 Golang 赋值 方法 指针

对于函数而言:

接收者为指针会改变接收者本身的值

接收者为值则只是拷贝,不会改变原本的值

并且值和指针可以任意调用对方的方法,即值可以调用接收者为指针的方法,指针可以调用接收者为值得方法。

原因是:可以自动指针解引用和值寻址

对于接口而言:

接收者为指针的方法,不能将值赋值给接口。

接收者为值得方法,会同时生成接收者为指针的方法,值和指针均可赋值给接口并调用该方法。

原因是:值被赋值给接口,不会存放值得地址,因此没有地址无法调用指针接收者的方法。

参考链接:

https://qcrao91.gitbook.io/go/interface/zhi-jie-shou-zhe-he-zhi-zhen-jie-shou-zhe-de-qu-bie

https://go.timpaik.top/11.6.html

标签:调用,对接口,接收者,接口,Golang,赋值,方法,指针
From: https://www.cnblogs.com/luci990722/p/18026955

相关文章

  • golang指针和结构体
    指针指针操作指针包括指针地址、指针类型和指针取值&:&符号放在变量前面进行取地址操作**:*放在变量前面根据地址进行取值指针地址:funcmain(){ varaint=1 //a的值是1--类型是int--,地址是0xc0000120c0,&是地址符号 fmt.Printf("a的值是%v--类型是%T--,地......
  • Golang fmt包的使用
    摘要Golang是一种简洁、高效的编程语言,其标准库中的fmt包是开发者经常使用的一个重要工具。本文将深入探究Golangfmt包的使用,包括格式化输出、输入扫描、错误处理以及自定义格式化等方面的内容,帮助读者更好地理解和使用该包。 引言Golang的fmt包提供了一系列函数,用于格式化......
  • golang之函数
    目录一、什么是函数二、函数的定义三、函数的返回值1.多个返回值2.命名返回值四、函数的参数1.可变长参数一、什么是函数简单来说就是一个特定的方法,通过这个方法产生预期的结果。函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输......
  • 【Go-Lua】Golang嵌入Lua代码——gopher-lua
    嵌入式8篇文章0订阅订阅专栏Lua代码嵌入GolangGo版本:1.19首先是Go语言直接调用Lua程序,并打印,把环境跑通packagemainimportlua"github.com/yuin/gopher-lua"funcmain(){ L:=lua.NewState() deferL.Close() //go err:=L.DoString(`print("gogogo!")`) iferr!=n......
  • golang time包和日期函数
    获取当前时间 //获取当前时间对象 timeObj:=time.Now() /*获取当前日期语法一*/ //打印当前日期 fmt.Println(timeObj)//2024-02-2017:50:54.085353+0800CSTm=+0.000323093 //当前年 year:=timeObj.Year() //打印当月 month:=timeObj.Month() //......
  • golang函数
    函数定义/*函数定义关键字funcfunc函数名(参数参数类型)函数返回值的类型*/funcgetInfo(namestring,ageint)string{ returnname}//函数返回多个返回值:则返回类型括号包裹(返回值类型,类型..),即时返回两个int,也需要(int,int)funcgetNum(xint,statusboo......
  • golang随机数源码分析及应用
    引言大家刚开始使用随机数的时候可能会这样写,但是他会产生一个问题,这是什么问题呢funcmain(){ fori:=0;i<10;i++{ rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn(100)) }}发现打印出来的结果都是相同的让我们看看用代码分析为什么产生这个问题首......
  • golang数组&切片&map
    数组数组声明funcmain(){ /*语法一*///数组名字[数组长度]数组类型 //声明一个数组长度为3类型是int会初始化为int类型的零值,默认值是[000] //声明数组的时候指定长度是一个常量,数组的不可改变,超出长度会报错 vararr[3]int //数组赋值 arr[0]=1......
  • golang运算符&流程控制
    运算符算数运算funcmain(){ varaint=10 varbint=8 varc=3.14 vard=5.15 fmt.Println(a+b)//18 fmt.Println(a-b)//2 fmt.Println(a*b)//80 fmt.Println(a/b)//1,Go中,如果运算的都是整数,相除后会默认去掉小数,保留整数部分, fmt.Pr......
  • golang基本数据类型
    数据类型介绍Go语言中的数据类型分为:基本数据类型和复合数据类型基本数据类型:整型、浮点型、布尔型、字符串复合数据类型:数组、切片、结构体、函数、map、通道(channel)、接口等基本数据类型:整型整型分为两个大类:有符号整型按长度分为:int8、int16、int32、int6......