1. 首页
  2. 主题
  3. Xorm

main.go中调用 modle中的xorm 为nil

tablecell · · 1796 次点击
目录结构 ``` proj │ go.mod │ main.go │ go.sum │ user.db │ └─models dao.go ``` proj\models\dao.go ``` package models import ( "fmt" "github.com/go-xorm/xorm" _ "github.com/mattn/go-sqlite3" "time" ) var ( baseTimestamp time.Time x *xorm.Engine ) func CallFuncFromMoles() { fmt.Println(baseTimestamp) fmt.Println(x) } func init() { fmt.Println("models init") baseTimestamp = time.Now() fmt.Println(baseTimestamp) x, err := xorm.NewEngine("sqlite3", "user.db") fmt.Println(x, err) } ``` proj\main.go ``` package main import ( "proj/models" "fmt" ) func main(){ fmt.Println("now in main CallFuncFromMoles") models.CallFuncFromMoles() } ``` go run main.go ``` ef20 UUID:0xf4f2e0 VARBINARY:0xf4f2e0 VARCHAR:0xf4f2e0 VERSION:0xf4eea0 YEAR:0xf4f2e0] <nil> map[] {{0 0} 0 0 0 0} 0xc0000ae128} <nil> now in main CallFuncFromMoles 2021年03月17日 21:09:08.1911855 +0800 CST m=+0.006000301 <nil> ``` baseTimestamp init和 CallFuncFromMoles都 有值 x 只在init 有值,CallFuncFromMoles为nil
注意不要乱用 := ![image.png](https://static.studygolang.com/210318/4eaae5bfaf4a41405c59b189680f272f.png)
#1
更多评论
@LintP&lt;/a&gt; 变量声明后不能再用 := 赋值 但是全局变量却能例外 也不报错,但是并不是预期的要给全局变量赋值,而是在函数体中屏蔽全局变量 这个 := 用法真是坑人&#34; name=&#34;content&#34; class=&#34;comment-textarea&#34; rows=&#34;8&#34; style=&#34;width: 100%;&#34;&gt;1楼 &lt;a href=&#34;/user/LintP&#34; title=&#34;@LintP&#34;&gt;@LintP&lt;/a&gt; 变量声明后不能再用 := 赋值 但是全局变量却能例外 也不报错,但是并不是预期的要给全局变量赋值,而是在函数体中屏蔽全局变量。 这个 := 用法真是坑人
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中