Go 如何避免;声明和未使用;仅在其他软件包中使用该变量时?
我看到了这个帖子 但我不知道这是不是处理错误的正确方法, 当我在其他包中使用该变量时 例如,如果我只在其他包中使用Go 如何避免;声明和未使用;仅在其他软件包中使用该变量时?,go,Go,我看到了这个帖子 但我不知道这是不是处理错误的正确方法, 当我在其他包中使用该变量时 例如,如果我只在其他包中使用Connect(),那么我不会在这个包中使用变量db func Connect() { db, err := sql.Open("mysql", "root:Berlin2018@/jplatform") if err != nil { panic(err.Error()) } } 避免“恼人的”声明和未使用的最好方法不应该声明未使用的变量,例如,如果不需要使
Connect()
,那么我不会在这个包中使用变量db
func Connect() {
db, err := sql.Open("mysql", "root:Berlin2018@/jplatform")
if err != nil {
panic(err.Error())
}
}
避免“恼人的”声明和未使用的最好方法不应该声明未使用的变量,例如,如果不需要使用从函数返回的变量,可以使用u忽略它。
就像在这里:
func Connect() {
_, err := sql.Open("mysql", "root:Berlin2018@/jplatform")
if err != nil {
panic(err.Error())
}
}
但是您需要在代码的其他部分使用DB实例
因此,您需要声明变量,如下所示:
var DBInstance *sql.db
然后您将能够从包中的任何位置访问db指针
因此,完整的示例将是:
var DBInstance *sql.db
func Connect() {
db, err := sql.Open("mysql", "root:Berlin2018@/jplatform")
if err != nil {
panic(err.Error())
}
}
这个问题不清楚你想要实现什么。请提供有关您想要什么和不想要什么的详细信息。我想在另一个包中使用此函数
Connect()
,但变量db
在初始化它的包中会导致“声明和未使用”错误。您的变量db
不可能从另一个包中使用,甚至不能在同一个包中使用,在Connect()
函数之外。。。所以我不确定你在问什么。使用Connect
的目的是什么,这样你就可以返回*sql.DB
会话来连接数据库。@ShiningGo你应该看看这个例子我想这就是我要找的!使变量成为全局变量。除非您可能不应该使用全局变量:;-)在我看来,说你“应该”使用全局变量是不好的。没错,这解决了OP提出的具体问题,但这通常是不好的做法。也许全局变量没有到位。那么你们将如何管理db实例呢@TommyF我读了这篇文章,最后他发送了一个指向db的指针作为参数,但他仍然必须在某个地方将其声明为var,那么您认为最佳实践是什么?