栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Iris框架在实现指针接收器和值接收器方面的差异

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Iris框架在实现指针接收器和值接收器方面的差异

参阅文件:

类型可能具有与之关联的方法集。接口类型的方法集是其接口。其他任何类型的方法集都

T

包含使用接收器类型声明的所有方法
T
。对应的指针类型的方法集
*T
是使用接收器
*T
或声明的所有方法的集合
T
(也就是说,它也包含的方法集
T
)。进一步的规则适用于包含匿名字段的结构,如有关结构类型的部分中所述。其他任何类型的方法集都为空。在方法集中,每个方法必须具有唯一的非空白方法名称。

如果您有一个接口

I
,并且
I
方法集中的某些或全部方法是由接收者为的方法提供的
*T
(其余方法由接收者为的方法提供
T
),则
*T
满足该接口
I
,但
T
不满足。那是因为
*T
的方法集包含
T
,但不是这样。

使用

ctrl := Pages{}
制造错误:

cannot use ctrl (type Pages) as type Handler in argument to Handle:Pages does not implement Handler (Serve method has pointer receiver)

使用

ctrl := Pages{}
需求:

func (p Pages) Serve() {    fmt.Println(p.i)}

虹膜处理程序是一种接口类型。像这个工作示例(请参阅评论):

package mainimport "fmt"type Handler interface {    Serve()}type Pages struct {    i int}func (p *Pages) Serve() {    fmt.Println(p.i)}func Handle(p Handler) {    p.Serve()}func main() {    // cannot use ctrl (type Pages) as type Handler in argument to Handle:    // Pages does not implement Handler (Serve method has pointer receiver)    //ctrl := Pages{}    ctrl := &Pages{101}    Handle(ctrl)}

输出:

101


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号