美文网首页
Go的指针类型与接口

Go的指针类型与接口

作者: Kevin_Tsang | 来源:发表于2019-07-09 23:08 被阅读0次

Go中的指针类型有一个约定:任一指针具有其地址指带的实体(最常见的是结构体,当然也可以是字符串、数字或者其他指针等)的所有属性、方法,这样“智能”的设定下使得我们可以 *** f ***

使用类型B的实例b给接口类型A的变量a赋值时,根据B实现A中定义的方法的接收者类型的不同(指针还是值),b的类型(指针还是值)有一些约束:

1、接收者类型是指针:这种情况下方法可能存在副作用(可能导致对方法接收者的修改),而对于接口类型的变量,如果它的值的类型是“值”那么go无法从这个变量中获取指针(原因比较深奥),这个值只是一个副本,那么上述的方法“副作用”是无法实现的,所以go认为赋值给;

2、接收者类型是值:方法没有副作用,方法内的值是个实际值副本,所以b不论为指针还是实例,接收者方法都不会有副作用,这时go不会强行要求;

由于Go中没有方法重载机制,所以以上同名方法只能存在一个。

另,要分清方法中的方法接收者和方法参数,当不讨论接口类型的赋值时,定义方法时不论将接收声明为指针还是实例,在调用方法时go都将自动将接收者转换为合适的类型(是否有副作用得看方法内部实现);而方法参数的类型是严格规定好的,无法进行转换。

相关文章

  • Go的指针类型与接口

    Go中的指针类型有一个约定:任一指针具有其地址指带的实体(最常见的是结构体,当然也可以是字符串、数字或者其他指针等...

  • Learning Go(1)

    Go是面向接口和函数式编程的语言; Go只有值类型和指针类型 在写可调用方法时,方法名要大写; “=”和“:...

  • Go的指针类型与接口实现

    Go的指针类型有一个约定:任一指针具有其指带的实体(最常见的是结构体,当然也可以是字符串、数字或者其他指针等)的所...

  • go语言指针类型的使用

    go语言的指针类型 简单地说go语言的指针类型和C/C++的指针类型用法是一样的,除了出去安全性的考虑,go语言增...

  • 第04天(面对对象编程)_04

    16_接口的继承.go 17_接口转换.go 18_空接口.go 19_类型断言:if.go 20_类型断言:sw...

  • unsafe包

    go语言的指针类型分为三种:(1)普通指针类型:*类型,用于存储地址,不能进行指针运算(2)通用指针类型:用于转换...

  • 探究golang接口

    今天看了《Go 语言中的方法,接口和嵌入类型》所以想对比以前对C/C++相关知识进一步理解golang的接口、指针...

  • (十四)golang unsafe.Pointer

    golang 的指针Go语言是个强类型语言。也就是说Go对类型要求严格,不同类型不能进行赋值操作。指针也是具有明确...

  • 【技术】Golang初探——指针、数组、map、函数

    指针 Go 具有指针。 指针保存了变量的内存地址。类型 *T 是指向类型 T 的值的指针。其零值是 nil。 '*...

  • GO语言基础(三)

    指针 Go 拥有指针。指针保存了值的内存地址。 类型 *T 是指向 T 类型值的指针。其零值为 nil。 & 操作...

网友评论

      本文标题:Go的指针类型与接口

      本文链接:https://www.haomeiwen.com/subject/xsmahctx.html