如何在Golang中将会话变量声明为全局变量

时间:2019-02-17 11:59:19

标签: session go global-variables

我不想每次创建会话时都重复此代码:

 var shash, _ = bcrypt.GenerateFromPassword([]byte(os.Getenv("SESSION_KEY")), bcrypt.DefaultCost)
var store = sessions.NewCookieStore(shash)
session, serr := store.Get(r, "session-name")
if serr != nil {
    ....
}

因此,我在软件包inc/inc.go中的文件inc中创建了一个函数:

func initSession(r *http.Request){
    var shash, _ = bcrypt.GenerateFromPassword([]byte(os.Getenv("SESSION_KEY")), bcrypt.DefaultCost)
    var store = sessions.NewCookieStore(shash)
    session, serr := store.Get(r, "session-name")
    if serr != nil {
        log.Fatal(serr)
        return
    }
}

函数initSession初始化会话对象。

文件inc.go中也有全局变量,例如:

var DbName string = "dbname"
var DbUser string = "user"
var DbPass string = "pass"
var DbHost string ="localhost"

这样我就可以从导入包inc的任何文件中访问这些变量。

我的问题是,我不像其他变量一样不知道如何在函数initSession中使session成为全局变量?这样我就可以使用inc.Session来访问它了?

此外,考虑到我使用的是软件包var Session type,我该如何用github.com/gorilla/sessions声明变量,我应该用type替换什么?

0 个答案:

没有答案