为不同的go结构创建构造函数

珍妮·希尔顿:

我有一个结构,可以通过以下过程来初始化,并且该结构按预期工作。

这是特定的跑步者

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,
    }
}

现在我收到该函数NewRunner存在的错误

我有另一个文件(在同一包中),其中包含接口

这是通用实现(同一程序包中的不同文件)

type Runner interface {
    Run(path string) error         
    ChangePath(newPath string) 
}

因此,也许NewRunner应该在那里,建议将新对象放在哪里?

显然我可以在文件中创建NewRunner1NewRunner2方法,但是我不确定是否推荐

lim

首先,您应该根据跑步者的功能而不是数字来为其命名。FastRunnerSlowRunnerLocalRunnerVS RemoteRunner你明白了。然后,您应该为每个对象创建一个构造:

func NewFastRunner( ... ) *FastRunner {
    return &FastRunner{ ... }
}

func NewSlowRunner( ... ) *SlowRunner {
    return &SlowRunner{ ... }
}

这是标准做法,并且使代码非常可读,明确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Julia中为结构创建构造函数?

为多个函数创建构造函数

为从抽象类继承的类创建构造函数

为 hashset 和 hashmap 创建构造函数

@AllArgsConstructor 是否为静态成员创建构造函数?

创建构造函数签名

创建构造函数图

如何创建构造函数?

如何创建构造函数?

如何创建构造函数?

创建构造函数选项(JavaScript的)

在Pharo或Smalltalk中创建构造函数

输入“ctor”来创建构造函数

为此VendingMachine类创建构造函数

是这个工厂吗?我如何为结构创建构造函数?

TS2351:如何在ts中为new函数创建构造函数类型

如何在JavaScript中创建构造函数以创建构造函数?

如何在Kotlin Android中为数据类创建构造函数?

我可以在Spring中为@Component类创建构造函数吗

如何在工厂方法中为Hashmap <String Boolean>创建构造函数?

在Java中为抽象类创建构造函数有什么用?

由于@RequiredArgsConstructor似乎不起作用,如何使lombok为非null字段创建构造函数?

无法为使用字符串作为参数的角组件创建构造函数

为数组创建构造函数并使用自定义类型填充它

我是否必须为Java中所有继承的类创建构造函数?

如何在 JavaScript 中为对象数组创建构造函数?

无法为具有模板类型参数的模板类型创建构造函数

如何使用箭头函数创建构造函数

为什么当我尝试为我创建的类创建构造函数时会出现错误?