在我的控制器包中,我有一个看起来像这样的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
我试过看错了,但找不到太多关于它的信息。有没有办法解决这个问题?
答案 0 :(得分:1)
如评论中所述,db
未导出,因此无法从其他包中导出。
在Go中,结构的初始化通常使用名为NewMyStructure
的函数完成,例如:
func NewAppContext(db *sql.DB) AppContext {
return AppContext{db: db}
}
然后在你的主要:
appC := controller.NewAppContext(db)