在业务开发中,**回滚(Rollback)**机制非常重要,尤其是在涉及多步骤操作时。如果其中一个步骤失败,需要撤销之前已完成的操作,以保证数据一致性。Go 语言没有像数据库事务那样的自动回滚机制,但可以通过编程手段实现“业务回滚”。
下面以一个简单的银行转账业务为例,演示如何用 Go 实现业务回滚。假设有两个账户 A 和 B,我们要从 A 转账 100 元到 B,操作分为两步:
从 A 扣款
给 B 加款
如果第二步失败,需要撤销第一步的扣款。
源码实现
package main
import (
"errors"
"fmt"
)
// Account 账户结构体
type Account struct {
Name string
Balance int