还是没有明白defer这里有什么用,为什么原来不用defer现在就需要
func AddUserCredential(loginName string, pwd string) error {
stmtIns, err := dbConn.Prepare("INSERT INTO users (login_name, pwd) VALUES (?, ?)")
if err != nil {
return err
}
_, err = stmtIns.Exec(loginName, pwd)
if err != nil {
return err
}
defer stmtIns.Close()
return nil
}
原来应该是不用defer的,因为出错了stmtins 就没有出现就直接返回了,如果成功prepare了就需要close
新加了后面的错误处理之后,应该是在验证之前defer吧,如下,否则返回了也没来得及defer啊
func AddUserCredential(loginName string, pwd string) error {
stmtIns, err := dbConn.Prepare("INSERT INTO users (login_name, pwd) VALUES (?, ?)")
if err != nil {
return err
}
_, err = stmtIns.Exec(loginName, pwd)
defer stmtIns.Close()
if err != nil {
return err
}
return nil
}
登录后可查看更多问答,登录/注册