Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何避免;声明和未使用;仅在其他软件包中使用该变量时?_Go - Fatal编程技术网

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,那么您认为最佳实践是什么?