gpt4 book ai didi

oop - 如何在 Go 中继承子类

转载 作者:IT王子 更新时间:2023-10-29 01:15:57 26 4
gpt4 key购买 nike

在 C 中我可以做这样的事情

struct Point {
int x,y;
}

struct Circle {
struct Point p; // must be first!
int rad;
}

void move(struct Point *p,int dx,int dy) {
....
}

struct Circle c = .....;
move( (struct Point*)&c,1,2);

使用这种方法,我可以传递任何具有结构点作为第一个成员的结构(圆、矩形等)。我怎样才能在 google go 中做同样的事情?

最佳答案

其实还有更简单的方法,更类似于OP的例子:

type Point struct {
x, y int
}

func (p *Point) Move(dx, dy int) {
p.x += dx
p.y += dy
}

type Circle struct {
*Point // embedding Point in Circle
rad int
}

// Circle now implicitly has the "Move" method
c := &Circle{&Point{0, 0}, 5}
c.Move(7, 3)

另请注意,Circle 还将实现 PeterSO 发布的 Mover 接口(interface)。

http://golang.org/doc/effective_go.html#embedding

关于oop - 如何在 Go 中继承子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com