我在不同的文件中分离了不同的http.HandleFunc,根据它们所涉及的页面。我使用gorilla/sessions管理客户端会话和用户身份验证,并使用go-sql-driver访问MySQL数据库。
项目布局:
<PROJECT ROOT>
-> <cliend> // This folder containing html, css, and js
-> <pagehndler>
-> <index>
-> index.go // Need to access database and session
-> <projbrwsr>
-> projbrwsr.go // Need to access database and session
-> main.go因此,我有一个指向go-sql-driver服务的指针
db, err := sql.Open("mysql", "user:password@/dbname")和指向gorilla/sessions服务的1个指针
var store = sessions.NewCookieStore([]byte("something-very-secret"))根据我的理解,有两种方法可以将两个指针传递给其他包:
sess、db)中,并将它们导出。并且,需要导入包(sess、db)所需的服务的包。并调用导出的指针。
-> //此文件夹包含html、css、和js -> index.go //需要访问数据库和会话-> -> projbrwsr.go //需要访问数据库和会话-> -> sess.go //存储数据库服务指针-> db.go //存储会话服务指针-> main.go将这两个指针传递给其他包以供其他句柄函数调用的最佳方法是什么?
发布于 2016-07-30 08:44:56
这就是应该起作用的概念。
在包中,您应该声明一个变量,该变量被导出。这个变量必须是一个指针。
var myVar = 3
var MyPointer = &myVarhttps://play.golang.org/p/EQDwGF7pjv
在主包中,您可以设置指向“全局”db或会话adress的指针。
mypackage.MyPointer = dbPointer然后,包内的指针指向您的dbPointer。我认为这是将指针传递到其他包的好方法。
https://stackoverflow.com/questions/38669971
复制相似问题