我有一个结构,我在以下过程中启动它,它按预期工作。
这是特定的运行者
type TestRunner struct {
path string
name string
}
func NewRunner(p string, n string) *TestRunner {
return &TestRunner{
path: p,
name: n,
}
}
现在我想在同一个包中创建另一个运行者,所以我这样做,例如
也是特定的运行者
type TestRunner2 struct {
path string
name string
}
func NewRunner(p string, n string) *TestRunner2 {
return &TestRunner2{
path: p,
name: n,
}
}
现在我收到错误消息,提示 func NewRunner
存在
我有另一个包含接口(interface)的文件(在同一个包中)
这是通用实现(同一包中的不同文件)
type Runner interface {
Run(path string) error
ChangePath(newPath string)
}
所以也许 NewRunner 应该在那里,建议把新对象放在哪里?
显然,我可以在文件中创建 NewRunner1
和 NewRunner2
方法,但我不确定是否推荐这样做
最佳答案
首先,您应该根据运行者的功能而不是数字来命名运行者。 FastRunner
和 SlowRunner
或 LocalRunner
与 RemoteRunner
。你明白了。然后你应该为每个人创建一个结构:
func NewFastRunner( ... ) *FastRunner {
return &FastRunner{ ... }
}
func NewSlowRunner( ... ) *SlowRunner {
return &SlowRunner{ ... }
}
这是标准做法,可以生成非常可读、明确的代码。
关于go - 为不同的go结构创建构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48806363/