Go:出现意外错误

时间:2015-05-23 20:42:02

标签: mysql go

在我的控制器包中,我有一个看起来像这样的AppContext结构:

type AppContext struct {
      db *sql.DB
}

func (c *AppContext) getDB() *sql.DB {
      return c.db
}

然后我在主包中有以下代码:

func main {

db, err := sql.Open("mysql",
        //other info)
    if err != nil {
        log.Fatal(err)
                return 
    }
        err = db.Ping() 
        if err != nil {
            log.Fatal(err)
                return
        }
    defer db.Close()
        appC := controller.AppContext{db}

}

构建它时,我收到了这个意外错误:

implicit assignment of unexported field 'db' in controller.AppContext literal

我试过看错了,但找不到太多关于它的信息。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

如评论中所述,db未导出,因此无法从其他包中导出。

在Go中,结构的初始化通常使用名为NewMyStructure的函数完成,例如:

func NewAppContext(db *sql.DB) AppContext { return AppContext{db: db} }

然后在你的主要:

appC := controller.NewAppContext(db)