Golang Go语言代码复用问题
Golang Go语言代码复用问题
用过 OOP 的都知道,子类重写父类的方法可以优雅的实现代码的复用,例如:
public class People {
String name;
int age;
public void hello() {
System.out.printf("name:%s age:%d sex:%s\n", name, age, sex());
}
//子类重写该方法即可复用 hello 方法的逻辑
public String sex() {
return "unknown";
}
static class Male extends People {
@Override
public String sex() {
return "M";
}
}
static class Female extends People {
@Override
public String sex() {
return "F";
}
}
public static void main(String[] args) {
new Male().hello();
new Female().hello();
}
}
然而在 go 中使用组合的方式实现不了,例如: https://play.golang.org/p/LnBeOxPZALF
现在我是用了一个不太优雅的方式进行复用了,不知道各位 v2 大佬们对这种情况有没有什么好的写法建议。
更多关于Golang Go语言代码复用问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
楼上说的对.
接口了解一下
现在就是用接口实现的,总感觉怪怪的 🥶,可能还是太习惯 OOP 了吧,https://play.golang.org/p/fsAfWNNkFOI
p.Sex.sex() 可以写成 p.sex()
func hello(name string, age int, gender string) { … }
duck type 了解下,interface 欢迎你
哈哈,不要在意这些细节
鸭子类型了解下。
定义接口,具体类实现接口,业务类手握接口类型,暴露接口接收接口类型的参数,传入具体实现对象。
像 5 楼说的那样,匿名字段的方法可以直接调用的,不明白楼主想要的是什么样子
你需要一个
type People interface { Hello() Sex() }
定义
type Male struct {
People
}
type Female struct {
People
}
分别实现 Sex 方法
golang 是组合的概念
继承优雅?
呵呵呵呵
//go
type People interface {
Hello()
Sex()
}
type Male struct {
name string
age int
}
func NewMale(name string, age int) *Male {
return &Male{name: name, age: age}
}
func (m Male) Hello() {
fmt.Printf(“name: %s, age %d\n”, m.name, m.age)
}
func (m Male) Sex() {
fmt.Println(“Male”)
}
type Female struct {
}
func (f Female) Hello() {
panic(“implement me”)
}
func (f Female) Sex() {
panic(“implement me”)
}
func main() {
var p People
p = NewMale(“mick”, 18)
p.Hello()
p.Sex()
}
类似这样?
关于Golang(Go语言)中的代码复用问题,以下是一些专业的解答和建议:
一、代码复用的重要性
代码复用是软件开发中的重要概念,它可以提高开发效率、减少代码冗余、降低维护成本,并使代码更加可维护和可扩展。
二、Golang中的代码复用方法
- 使用包管理工具:如Go Modules,可以方便地引入和管理第三方库,实现依赖关系的管理。
- 定义接口:通过接口实现代码的高度抽象和灵活性,保证代码的一致性并提高复用性。
- 使用结构体:封装相关的属性和方法,实现数据的封装和代码的复用。
- 组合:通过组合多个结构体,实现不同属性和方法的复用,灵活组合多种功能。
三、代码复用的实践技巧
- 遵循单一职责原则:将代码拆分成更小、更可复用的单元。
- 编写单元测试:保证代码的正确性和稳定性,便于后续维护和修改。
- 提取函数:将重复的代码提取到单独的函数中,减少代码重复。
综上所述,Golang提供了多种方法和技巧来实现代码复用。通过合理使用这些方法和技巧,可以显著提高开发效率、降低维护成本,并编写出更加健壮和可扩展的代码。