为什么我的绑定数据库指针为零?

时间:2014-10-30 21:04:13

标签: go tiedot

var myDB *db.DB

func init() {
    myDB, err := db.OpenDB("db")
    if err := myDB.Create("Feeds"); err != nil {}
    if err := myDB.Create("Votes"); err != nil {}
}

func idb() {
    for _, name := range myDB.AllCols() {
        fmt.Printf("I have a collection called %s\n", name)
    }    
}

func main() {
    idb()
}

我收到以下错误:

  

运行时错误:无效的内存地址或无指针取消引用

可能是因为myDBnil,但为什么以及如何修复它以便我可以在init中设置myDB?

请注意,如果我只是在不使用全局变量的情况下删除main中的所有内容,它就会起作用。

1 个答案:

答案 0 :(得分:2)

  

Short variable declarations

     

短变量声明使用语法:

ShortVarDecl = IdentifierList ":=" ExpressionList .
     

它是带初始化程序的常规变量声明的简写   表达式,但没有类型:

"var" IdentifierList = ExpressionList .

myDB是一个本地init函数变量。 :=是一个简短的变量声明。

myDB, err := db.OpenDB("db")

要更新包myDB变量,请写

var err error
myDB, err = db.OpenDB("db")