我的golang main()
路由初始化数据库连接,然后将其传递给另一个函数以启动主处理。
func main() {
dbinfo := fmt.Sprintf("user=%s dbname=%s sslmode=disable", "my_user", "my_db")
db, err := sql.Connect("postgres", dbinfo)
if err != nil { log.Fatalln(err) }
defer db.Close()
model.Run(db)
}
model.Run()
方法用于调用其他几个包和函数,只是在它们之间传递db
对象。
如果其中一个下游函数遇到错误怎么办?程序是否会在不关闭上面定义的连接的情况下关闭?或者它会冒出异常并在defer
中执行我的main()
语句?
为了它的价值,我按照以下方式处理所有错误 -
_, err := someFunction()
if err != nil { log.Fatalln(err) }
注意:Fatalln
相当于调用Println
然后调用os.Exit(1)
(See here)