gpt4 book ai didi

go - "Static"方法设计

转载 作者:IT老高 更新时间:2023-10-28 13:00:03 25 4
gpt4 key购买 nike

我正在寻找有关清理以下结构的最佳方法的建议。我知道 Go 没有静态方法,通常是 better to encapsulate functionality in a separate package .我的结构类型相互引用,因此不能在单独的包中声明,因为循环导入。

type Payment struct {
User *User
}

type User struct {
Payments *[]Payments
}

func (u *User) Get(id int) *User {
// Returns the user with the given id
}

func (p *Payment) Get(id int) *Payment {
// Returns the payment with the given id
}

但是,如果我想加载用户或付款,我只是扔掉了接收器:

var u *User
user := u.Get(585)

我可以命名函数本身,这让我觉得不干净:

func GetUser(id int) *User {
// Returns the user with the given id
}

func GetPayment(id int) *Payment {
// Returns the payment with the given id
}

我真的希望能够在结构上调用 .Get 或类似的方法,而无需在函数本身中写入结构的名称。这样做的惯用方法是什么?

最佳答案

GetUser()GetPayment() 给我的印象是非常清晰和惯用的。我不确定你觉得它们有什么不干净的地方。

在结构上调用 .Get() 以返回 另一个 结构,这让我觉得非常奇怪、不清楚和单调。

我认为这可能只是坚持使用习语并相信你会习惯它的情况。

关于go - "Static"方法设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18678135/

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