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