@pmispig 但是 C 有 #define,可以弄成 CHECK_RETURN(function());
index90
2019-05-24 14:38:21 +08:00
都说 if err != nil 不好,我想问,你们认为好的是怎样的?
RubyJack
2019-05-24 15:17:48 +08:00
我从 if err != nil 中学到了很多,原来这个底层调用也可能报错
WilliamYang
2019-05-24 15:39:40 +08:00
我已经习惯,并可能喜欢上它了
Skye347
2019-05-24 15:40:05 +08:00
就 Rust 而言,只有错误没有异常,可能出错的地方统一用 Result<Item,Error>代替,不想处理直接往上抛直接打?号,不想处理显示报错直接.unwrap (),不想处理直接忽略有 if let,不想处理带默认值有 unwrap_or(),想处理直接用 match 处理部分或全部情况,再或者结合 map 等函数式风格随意组合,多种方式随意选择,还有 IDE/编译器提示。 不过 go 选择了类 c 的风格,强调简单,那也没哪个好或者不好的了。
neoblackcap
2019-05-24 16:03:29 +08:00
@Skye347 就 Result 这个设计就是吸收了多年 PL 研究成果的好东西,配合自带的各种方法,写起代码行云流水。错误能处理的就处理,不能处理就抛给 caller,还能配合编译器进行类型检查,Monad 的应用,这么好的东西有人理解不了,硬说跟 error code 一样,还能说什么。我觉得这些人用 Go 跟 C 都挺好的,记得不要忘记检查错误码就好了
skadi
2019-05-24 19:11:50 +08:00
defer
sunny352787
2019-05-24 19:23:58 +08:00
你们这帮 Java 转 Go 的肯定都喜欢 try,就是习惯 你看像我们 C++转 Go 的从来不会提这类问题~