Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 为什么我的tiedot DB指针为零?_Go_Tiedot - Fatal编程技术网

Go 为什么我的tiedot DB指针为零?

Go 为什么我的tiedot DB指针为零?,go,tiedot,Go,Tiedot,我得到以下错误: 运行时错误:无效内存地址或零指针取消引用 这可能是因为myDB是nil,但是为什么以及如何修复它,以便在init中设置myDB 请注意,如果我只是在main中删除所有内容,而不使用全局变量,那么它是有效的 短变量声明使用以下语法: var myDB *db.DB func init() { myDB, err := db.OpenDB("db") if err := myDB.Create("Feeds"); err != nil {} if err

我得到以下错误:

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

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

请注意,如果我只是在main中删除所有内容,而不使用全局变量,那么它是有效的

短变量声明使用以下语法:

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()
}
它是带有初始值设定项的正则变量声明的缩写 表达式但无类型:

ShortVarDecl = IdentifierList ":=" ExpressionList .
myDB
是一个本地
init
函数变量<代码>:=是一个简短的变量声明

"var" IdentifierList = ExpressionList .
要更新包
myDB
变量,请写入

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

好的,我在想,因为err不存在,但我需要:=
var err error
myDB, err = db.OpenDB("db")