首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go,Xorm-从其他包导入xorm实例,但将为空

Go,Xorm-从其他包导入xorm实例,但将为空
EN

Stack Overflow用户
提问于 2021-08-30 12:15:04
回答 1查看 29关注 0票数 0

为什么是nil?它已经困扰我大约三个小时了。

main.go

代码语言:javascript
复制
package main

import (
    "sample/db"
)

func main() {    
    println(db.Xorm)       //nil...why...?
}

db/xorm.go

代码语言:javascript
复制
package db

import (
    _ "github.com/lib/pq"
    "xorm.io/xorm"
)

var Xorm *xorm.Engine

func init() {

    url := "user=test host=localhost password=test port=15432 dbname=test sslmode=disable"
    Xorm, err := xorm.NewEngine("postgres", url)
    _ = Xorm

    println(Xorm)           //This is not nil

    if err != nil {
        panic(err)
    }
}

当我在db/xorm.go中定义“SampleVariable字符串”并从main.go导入时,它不会为空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-30 13:01:41

这条线

代码语言:javascript
复制
Xorm, err := xorm.NewEngine("postgres", url)

(请注意,:=)在init()函数的作用域中创建了一个新的局部变量Xorm,它隐藏了具有相同名称的包级变量,因此,包级变量仍然是nil

只使用=进行赋值应该可以解决这个问题,例如:

代码语言:javascript
复制
var err error
Xorm, err = xorm.NewEngine("postgres", url)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68983986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档