gpt4 book ai didi

oop - Go 语言中的多态性

转载 作者:IT老高 更新时间:2023-10-28 13:07:05 26 4
gpt4 key购买 nike

我正在学习 go lang,我想知道是否有办法做这样的事情:

type Foo struct {
...
}

type Bar struct {
Foo
...
}

func getFoo() Foo {
return Bar{...}
}

在面向对象的语言中,这样的代码应该可以毫无问题地运行,但是在 go 中它会抛出一个错误,说 getFoo() 必须返回类 Foo 的实例。

有没有办法实现类似于我在 Go 中描述的多态性?

最佳答案

Go 不是典型的 OO 语言。此外,每种语言都有自己的做事方式。您可以使用界面和合成来实现您想要的,如下所示:

package main

import "fmt"

type Foo interface {
printFoo()
}

type FooImpl struct {

}

type Bar struct {
FooImpl
}

type Bar2 struct {
FooImpl
}

func (f FooImpl)printFoo(){
fmt.Println("Print Foo Impl")
}

func getFoo() Foo {
return Bar{}
}

func main() {
fmt.Println("Hello, playground")
b := getFoo()
b.printFoo()
}

http://play.golang.org/p/iR8QkD3DnP

关于oop - Go 语言中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115385/

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