1、如果Add函数的调用代码为:

func main() {var a Integer = 1var b Integer = 2var i interface{} = &asum := i.(*Integer).Add(b)fmt.Println(sum)
}

则Add函数定义正确的是()

A.type Integer int
func (a Integer) Add(b Integer) Integer {return a + b
}B.
type Integer int
func (a Integer) Add(b *Integer) Integer {return a + *b
}C.
type Integer int
func (a *Integer) Add(b Integer) Integer {return *a + b
}D.
type Integer int
func (a *Integer) Add(b *Integer) Integer {return *a + *b
}

参考答案:AC

2、如果Add函数的调用代码为:

func main() {var a Integer = 1var b Integer = 2var i interface{} = asum := i.(Integer).Add(b)fmt.Println(sum)
}

则Add函数定义正确的是()

A.type Integer int
func (a Integer) Add(b Integer) Integer {return a + b
}B.
type Integer int
func (a Integer) Add(b *Integer) Integer {return a + *b
}C.
type Integer int
func (a *Integer) Add(b Integer) Integer {return *a + b
}D.
type Integer int
func (a *Integer) Add(b *Integer) Integer {return *a + *b
}

参考答案:A

3、关于GetPodAction定义,下面赋值正确的是()

type Fragment interface {Exec(transInfo *TransInfo) error
}
type GetPodAction struct {
}
func (g GetPodAction) Exec(transInfo *TransInfo) error {...return nil
}A. var fragment Fragment = new(GetPodAction)
B. var fragment Fragment = GetPodAction
C. var fragment Fragment = &GetPodAction{}
D. var fragment Fragment = GetPodAction{}

参考答案:ACD

考察知识点

指针与值类型实现接口的区别

package mainimport ("fmt"
)type People interface {ReturnName() string
}type Student struct {Name string
}type Teacher struct {Name string
}func (s Student) ReturnName() string {return s.Name
}func (t *Teacher) ReturnName() string {return t.Name
}func main() {cbs := Student{Name: "咖啡色的羊驼"}sss := Teacher{Name: "咖啡色的羊驼的老师"}// 值类型var a Peoplea = cbsname := a.ReturnName()fmt.Println(name)// 指针类型//a = sss // <- 这样写不行!!!a = &sss // 由于是指针类型,所以赋值的时候需要加上&name = a.ReturnName()fmt.Println(name) // 输出"咖啡色的羊驼的老师"
}

“a = sss”这样写会发生报错:

cannot use sss (type Teacher) as type People in assignment:
Teacher does not implement People (ReturnName method has pointer receiver)

因为是Teacher的指针实现了ReturnName方法,Teacher本身没实现。

总结:

1.当是指针类型,它的方法可以是指针接收者,或者是值接收者
2.当是值类型,它的方法只能是值接收者

转载于:https://www.cnblogs.com/Paul-watermelon/p/11209603.html

Go_笔试题记录-指针与值类型实现接口的区别相关推荐

  1. Go_笔试题记录-不熟悉的

    1.golang中没有隐藏的this指针,这句话的含义是() A. 方法施加的对象显式传递,没有被隐藏起来 B. golang沿袭了传统面向对象编程中的诸多概念,比如继承.虚函数和构造函数 C. go ...

  2. 嵌入式工程师综合笔试题之指针和内存

    嵌入式工程师综合笔试题之指针和内存 一维数组排序 一维数组反转 二分查找 atoi函数实现 把字符串转换成整型数. 什么是大端和小端?写一个函数判断当前计算机是大端还是小端?通过联合体. 程序如下:c ...

  3. 值类型与引用类型的区别

    可以这样理解: 值类型保存的是具体的值 引用类型保存的是值的地址 例如 int a = 1; int b = a; b++; 这时b为2,a仍然是1 再看引用类型,例如有个类型是 User User ...

  4. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  5. 值类型和引用类型的区别[转]

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  6. java 值类型与引用类型_Java值类型和引用类型的区别

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  7. golang值类型与引用类型的区别

    1.golang值类型与引用类型的区别 1.1 本质存储区别 值类型与引用类型的区别主要在于: 值类型的变量: 存储当前类型的存储的数据.值类型包括数值类型.bool.string.数组.struct ...

  8. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别 接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于: 抽象类是一个不完全的类,类 ...

  9. 值类型和引用类型及其区别!

    值类型和引用类型的基类 引用类型和值类型都继承自System.Object类.不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.Valu ...

最新文章

  1. Go 分布式学习利器(4)-- 条件和循环
  2. 把我坑惨的一个update语句!
  3. BZOJ 1097 [POI2007]旅游景点atr
  4. SpringCloud熔断器介绍
  5. 纯C++创建Windows窗体(理解WinMain()与WndProc())
  6. JDK15正式发布,新增功能预览!
  7. 转行人工智能,不得不温故的数学基础知识
  8. EDAS投稿出现问题: notembedded: Upload failed: The font Helvetica is not embedded in the file
  9. java判断 图片_java判断是否为图片的步骤和方法
  10. 菜鸟学习Spring——初识Spring
  11. 关于跨域以及跨域的实现方式
  12. 三星android智能手机usb驱动程序,三星手机安卓USB驱动Samsung USB Driver for Mobile Phones 1.5.51.0...
  13. 【初学大数据】CentOS7安装hadoop3.3.2完全分布式详细流程
  14. Stata:图示交互效应-调节效应
  15. android usb 投电视盒子,电脑还可以管理电视盒子?这样做就可以!
  16. 跌破150美元、市值蒸发3600亿美元,这个圣诞节苹果过得“太冷了”!
  17. Google 全国 地图 纠偏数据 偏移数据 超高精度(0.002) (纠偏、偏移、地图、数据)
  18. 公司申请微信公众平台所需资料和注册流程步骤
  19. 20190919题目总结——选择题
  20. 服务器网站显示1004报错,失败:错误域= NSURLErrorDomain代码= -1004“无法连接到服务器。”...

热门文章

  1. OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用
  2. echo(),print(),print_r(),var_dump()的区别
  3. hdu 1542/1255 Atlantis/覆盖的面积
  4. HDUOJ 1062 TEXT REVERSE
  5. [BZOJ2599][IOI2011]Race 点分治
  6. static、volatile、synchronize
  7. Java-Character String StringBuffer StringBuilder
  8. Spring Boot干货系列:(二)配置文件解析
  9. 软考考前冲刺第十三章UML建模
  10. PHP面向对象(三)