首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >界面中的构造方法?(在戈朗)

界面中的构造方法?(在戈朗)
EN

Stack Overflow用户
提问于 2013-10-27 06:37:46
回答 2查看 7.9K关注 0票数 4

如果我有以下接口和结构:

代码语言:javascript
复制
package shape

type Shape interface {
    Area()
}

type Rectangle struct {
}

func (this *Rectangle) Area() {}

func New() Shape {
    return &Rectangle{}
}

然后如何将New()方法(作为构造函数)添加到接口Shape

用例是,如果我有另一个结构Square

代码语言:javascript
复制
type Square struct {
    Rectangle
}

然后Square将有一个方法Area()。但它不会有New()。我的目的是让继承Shape的任何结构自动拥有一个New()方法。我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-27 11:18:23

在Go中,不可能在接口上创建方法。

惯用的方法不是为接口创建方法,而是创建以接口为参数的函数。在您的示例中,它将采用形状,使用反射包返回相同类型的新实例:

代码语言:javascript
复制
func New(s Shape) Shape { ... }

另一种可能是将接口嵌入到struct类型中,在struct类型上创建New-方法。

操场示例:http://play.golang.org/p/NMlftCJ6oK

票数 6
EN

Stack Overflow用户

发布于 2013-10-27 06:55:36

不你不能那样做。接口没有设计成任何类似于构造函数的。构造函数不是您所调用的实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19615338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档