V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ireina  ›  全部回复第 1 页 / 共 1 页
回复总数  3
虽然我也喜欢 if expression ,但是你的实现是错误的。if expression 最重要的就是短路特性或者惰性求值。你需要传入 closure 而不是具体的值。但是 golang 的语法会让这样写边的复杂,最终你会发现还不如 if statement 。
@levn 继续往下学,你会看到 Free monad 和 algebraic effects ,中间你还会尝试 finally tagless 和 readerT pattern 。参数式抽象发挥到极致就会变成 Haskell 。
我也尝试过类似的事。我觉得没必要去改`if err != nil`其实,错误处理是一种计算效应,真正的干净的代码需要 monad ,但是目前没几个语言直接支持 monad 的上下文管理。把 error wrap 起来的确是一种处理错误的方式,标准库里其实也有使用过(但是很少),这种方式的缺点在于你必须很清楚 error 的状态是如何共享的。我觉得在给 interface 写 adapter 的时候可以用,但是平时写 struct 是不必要的。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6162 人在线   最高记录 6547   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 02:51 · PVG 10:51 · LAX 19:51 · JFK 22:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.