:= signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer stop() // db接続を作り、マイグレーション実行 db, _ := sql.Open("mysql", "root:pass@tcp(127.0.0.1:3306)/mysqldb") doMigration(db) // サービスメイン(DBへのアクセスは別の接続を利用) go doMain() <-ctx.Done() // signalを待つ println(db) } Closeしなくても リーク検出しなくなる