为了账号安全,请及时绑定邮箱和手机立即绑定

难道是必须手动调用db.Close()释放资源?

难道是必须手动调用db.Close()释放资源?

Go
慕运维8079593 2023-04-16 17:13:17
参考 astaxie 的代码import (     _ "code.google.com/p/go-mysql-driver/mysql"     "database/sql"     "fmt"     //"time") func main() {     db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")    checkErr(err)    //插入数据     stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")    checkErr(err)     res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")    checkErr(err)     id, err := res.LastInsertId()    checkErr(err)     fmt.Println(id)    //删除数据     stmt, err = db.Prepare("delete from userinfo where uid=?")    checkErr(err)     res, err = stmt.Exec(id)    checkErr(err)     affect, err = res.RowsAffected()    checkErr(err)     fmt.Println(affect) } func checkErr(err error) {    if err != nil {        panic(err)     } }求教:这段代码对数据库的连接没有主动关闭(调用 db.Close()), 是不是Go的垃圾收集自动关闭释放资源呢? 还是必须手动调用db.Close()释放资源?
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

Go垃圾回收是内存垃圾回收,分配给对象的内存回收。对于资源,必须手动释放,还给操作系统

查看完整回答
反对 回复 2023-04-20
?
繁花如伊

TA贡献2012条经验 获得超12个赞

不手动关的话,可能在你程序结束的时候,或者这个连接对象出了作用域的时候,golang会帮你自动关闭,不过还是支持手动关闭,这是好习惯。

查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信