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() }
我收到以下错误:
运行时错误:无效的内存地址或nil指针取消引用
可能是因为myDBis nil,但是为什么以及如何解决它,以便可以在init中设置myDB?
myDB
nil
请注意,如果我只删除main中的所有内容而不使用全局变量,则它可以正常工作。
简短的变量声明 简短的变量声明使用以下语法: ShortVarDecl = IdentifierList ":=" ExpressionList . 它是带有初始化表达式但没有类型的常规变量声明的简写: "var" IdentifierList = ExpressionList .
简短的变量声明
简短的变量声明使用以下语法:
ShortVarDecl = IdentifierList ":=" ExpressionList .
它是带有初始化表达式但没有类型的常规变量声明的简写:
"var" IdentifierList = ExpressionList .
myDB是局部init函数变量。:=是一个简短的变量声明。
init
:=
myDB, err := db.OpenDB("db")
要更新程序包myDB变量,请编写,
var err error myDB, err = db.OpenDB("db")