Concurrency 此webapp代码是否需要同步?

Concurrency 此webapp代码是否需要同步?,concurrency,go,goroutine,Concurrency,Go,Goroutine,我正在学习Go,这是我正在编写的一个web应用程序的代码: func init() { db, err := sql.Open("mysql", "master:123456@/shopping_list") if err != nil { panic(err.Error()) } http.HandleFunc("/sql", func(w http.ResponseWriter, r *http.Request) { sq

我正在学习Go,这是我正在编写的一个web应用程序的代码:

func init() {

    db, err := sql.Open("mysql", "master:123456@/shopping_list")

    if err != nil {
        panic(err.Error())
    }

    http.HandleFunc("/sql", func(w http.ResponseWriter, r *http.Request) {
        sqlHandler(w, r, db)
    })

}
sqlHandler()
从购物列表中的表中读取记录,对其进行编辑,然后更新该记录

据我所知,每个请求都在一个单独的goroutine上运行,mysql在读取或写入记录时锁定一条记录。那么,在这种情况下,这个代码需要任何同步吗?

简短回答:不需要。 您不需要显式同步代码,因为对
db
上任何需要锁的方法的调用都将被阻塞,直到锁被释放。换句话说,同步由实际需要同步的软件包负责


作为补充说明,我建议您运行您的代码,这将使其他阅读您的代码的疯子感到高兴