error、defer 与资源清理
Go 将错误作为普通返回值处理。调用返回 (value, error) 的函数后,应立即判断 err,不要继续使用可能无效的结果。
defer 将函数调用推迟到当前函数返回前执行,多个 defer 按后进先出顺序执行。它适合在资源成功打开后立即登记关闭操作。
若需要保留关闭错误(例如写入文件时),不能简单忽略 Close 的返回值;应根据业务要求在显式关闭或命名返回值中处理。
包装错误
使用 %w 包装底层错误,使调用方可用 errors.Is 或 errors.As 检查原因:
错误信息应提供上下文,但不要包含密码、令牌等敏感数据。