在golang中编写通用函数的良好实践

在golang中编写通用函数的良好实践,go,Go,我正在使用golang编写一个web服务器应用程序 需要在同一软件包中的多个控制器中使用非常常见的数据库查询函数findUserByEmail(DB gorm.DB,email string) 不确定应该在哪里声明此函数,以便在需要时不需要在每个控制器中复制此代码 我可以在其中一个控制器中将其设置为FindUserByEmail(DB gorm.DB,email string)。这样我就可以在任何其他控制器中使用它。但这似乎不是一个好的做法 例如,您必须为数据库函数创建一个单独的包,称为db。

我正在使用golang编写一个web服务器应用程序

需要在同一软件包中的多个控制器中使用非常常见的数据库查询函数
findUserByEmail(DB gorm.DB,email string)


不确定应该在哪里声明此函数,以便在需要时不需要在每个控制器中复制此代码


我可以在其中一个控制器中将其设置为
FindUserByEmail(DB gorm.DB,email string)
。这样我就可以在任何其他控制器中使用它。但这似乎不是一个好的做法

例如,您必须为数据库函数创建一个单独的包,称为db。 在项目中创建一个名为db的文件夹,并将所有代码放在该文件夹中

package db

FindUserByEmail(DB gorm.DB, email string ) {
...
}
需要时,您可以按如下方式访问软件包:

import "myproject/db"

db.FindUserByEmail(gorm,"test@gmail.com")

Go包是一个包含一个或多个文件的目录。在编译时,编译器合并一个包的所有文件。函数可以出现在其中一个文件中,并且只能出现在其中一个文件中。你的问题到底是什么?thx@peterSO,我的意思是我想在一个地方定义一个函数,然后在许多其他控制器中调用它。我应该在何处声明此函数?向我们展示一个示例,说明您如何在包中多次定义此函数,我们将告诉您哪里出错。“一个[Go]函数让我们将一系列语句打包为一个单元,可以从程序中的其他地方调用,可能多次。”Go编程语言,AlanA.A.Donovan和BrianW.Kernighan,“我应该在哪里声明这个函数”并不重要。只要最适合你的需要。@Hank如果这个答案帮助你,请接受它,谢谢。