gpt4 book ai didi

Golang代码结构

转载 作者:IT王子 更新时间:2023-10-29 01:41:42 26 4
gpt4 key购买 nike

在结构中对方法进行分组是否值得:例如:

type UserManager struct {
DB *sql.DB
}

func (m UserManager) Insert (u User) error {...}
func (m UserManager) Delete (u User) error {...}
...

或者更简单的只支持单独的功能。

func InsertUser (u User, db *sql.DB) error {...}

虽然第二种方法一开始看起来更简单,但在未来这种方式中,package 中可能会有很多功能。我应该为每个域聚合制作单独的包吗?在示例中,到目前为止我已经看到,只有 model 包。我一直主要使用 OO 语言,因此需要一些关于 Go 最佳实践的建议。

最佳答案

你的第二个建议不是好的 go 代码!为什么?因为在最好的情况下,函数应该将接口(interface)作为输入。

所以 InsertUser 函数应该看起来像这样,它将结合您的第一个建议和第二个建议:

type Inserter interface {
Insert(User)error
}
func InsertUser(i Inserter) error {...}

在那种情况下,您的功能测试很容易,因为您可以轻松模拟插入器。

关于Golang代码结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42317700/

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