gpt4 book ai didi

Golang struct 构造通用性

转载 作者:IT王子 更新时间:2023-10-29 00:54:08 27 4
gpt4 key购买 nike

我有一个由另外两个对象实现的结构。在这种情况下,typeA 和 B repo 。有一些初始化代码,在这里用省略号表示。初始化代码在两个构造函数之间完全重复,当我只有两个 dbRepo 时这没什么大不了的,但随着我创建更多,我会更加担心不良做法。有什么方法可以用接口(interface)概括它吗?

type dbRepo struct {
foo string
bar string
}

type typeARepo dbRepo
type typeBRepo dbRepo

func newTypeARepo(foo, bar string) {
...
}

func newTypeBRepo(foo, bar string) {
...
}

最佳答案

我个人在 Go 中观察到的做法(这也是有效 Go 或 Go 入门教程中推荐的做法)只是定义一个 NewdbRepo 函数并将其用于所有实例化。它的实现看起来像;

func NewdbRepo(f, b string) *dbRepo {
return &dbRepo{ foo:f, bar:b}
}

您实际上不能像在大多数 C 类语言中那样定义构造函数,因此您只需要提供一个包范围的方法来为您进行构造。此外,如果您不使用复合文字(我在 NewdbRepo 实现中使用的初始化样式),那么您可能会发现它本身就足够简洁,足以满足您的需求。

关于Golang struct 构造通用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685755/

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