僕はgolang+mysqlを使っているのですが、いかんせんトランザクション管理に困っております。 go-sql-driver/mysqlにはbegin、commit、rollbackというメソッドがありますが まさか一つ一つ手で書く・・・? 力技としてならそれもありかも・・・なんて思っていた時期がありました。 そしてトランザクション管理について調べていると、海外の方が良さげなラッパー関数を紹介してくれていました。 ラッパー関数 元記事はこちら↓ stackoverflow.com 記事で紹介されているラッパー関数は下記になります。 func Transact(db *sql.DB, txFunc func(*sql.Tx) error) (err error) { tx, err := db.Begin() if err != nil { return } defer func() {
![golangでトランザクション管理を少し楽にするラッパー関数 - エンジニアはこわくない](https://cdn-ak-scissors.b.st-hatena.com/image/square/64af935e9b5e6d65eacecb8ea3a69e6ea08fa341/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Ftsujitaku50%2F20170224%2F20170224131252.jpg)