2014-10-30 26 views
1
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() 
} 

我得到以下錯誤:爲什麼我的tiedot數據庫指針爲零?

runtime error: invalid memory address or nil pointer dereference

這可能是因爲myDBnil,但爲什麼和如何我可以修復它,所以我可以安裝在MYDB初始化?

請注意,如果我只是放下一切而不使用全局變量,它的工作原理。

回答

2

Short variable declarations

A short variable declaration uses the syntax:

ShortVarDecl = IdentifierList ":=" ExpressionList . 

It is shorthand for a regular variable declaration with initializer expressions but no types:

"var" IdentifierList = ExpressionList . 

myDB是一個局部函數init變量。 :=是一個簡短的變量聲明。

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

要更新包myDB變量,寫,

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

好,我就在想,因爲犯錯的又是不存在的,我需要的:= – 2014-10-30 21:31:04

+0

現在的工作THX :) – 2014-10-30 21:36:33

相關問題