是否可以扩展 go struct 构造函数?

mer*_*nan 3 go

给予

type Rectangle struct {
    h, w int
}

func (rec *Rectangle) area() int {
    return rec.w * rec.h
}
Run Code Online (Sandbox Code Playgroud)

您可以Square使用 Rectangle定义结构,以便我可以使用 area 方法吗?如果不可能,那绝对没问题。我不会评判语言,不会哭泣或生气。我只是在学习golang。

Fli*_*mzy 5

Go 不是经典的面向对象,因此它没有继承。它也没有构造函数。它所具有的是嵌入。因此这是可能的:

type Rectangle struct {
    h, w int
}

func (rec *Rectangle) area() int {
    return rec.w * rec.h
}

type Square struct {
    Rectangle
}
Run Code Online (Sandbox Code Playgroud)

这里的主要限制是该area()方法无法访问仅存在于Square.