1
type Rectangle struct {
h, w int
}
func (rec *Rectangle) area() int {
return rec.w * rec.h
}
您可以定义使用矩形一个Square
结构,这样我就可以利用面积法的?如果不可能,这绝对没问题。我不会判断语言,也不会哭泣或不高兴。我只是在学习golang。
type Rectangle struct {
h, w int
}
func (rec *Rectangle) area() int {
return rec.w * rec.h
}
您可以定义使用矩形一个Square
结构,这样我就可以利用面积法的?如果不可能,这绝对没问题。我不会判断语言,也不会哭泣或不高兴。我只是在学习golang。
Go不是面向对象的,所以它没有继承性。它也没有构造函数。它所具有的是嵌入。因此,这是可能的:
type Rectangle struct {
h, w int
}
func (rec *Rectangle) area() int {
return rec.w * rec.h
}
type Square struct {
Rectangle
}
主要这里的限制是没有办法为area()
方法来访问,只有在Square
存在的领域。
我开始知道实现这种行为的预期方式是编写普通函数。见MakeSquare
type Rectangle struct {
h, w int
}
func (rec *Rectangle) area() int {
return rec.w * rec.h
}
type Square struct {
Rectangle
}
func MakeSquare(x int) (sq Square) {
sq.h = x
sq.w = x
return
}
func Test_square(t *testing.T) {
sq := MakeSquare(3)
assert.Equal(t, 9, sq.area())
}
Go没有构造,你的意思是这样的?:https://play.golang.org/p/ra3Wl0I0kM – JimB
可能的语法我能__imagine__是'广场{2}'而比'Square {Rectangle {2,2}}'。 –
即使在Go中有继承的概念,我也不确定你会如何想象它会起作用。 'Square {2}'只是一个字面值,它不会做任何事情。 – JimB