go 语言里 defer 的位置

3 天前
 nativeBoy

今天在看代码的时候,给已有代码添加 defer ,但是加上代码确实难看,所以突发奇想就把 defer 放在了定义的后面,如下。不知道写这里是否合适

ctx, cancel := context.WithTimeout(); defer cancel()
1212 次点击
所在节点    Go 编程语言
5 条回复
nativeBoy
3 天前
好吧,go fmt 自动给我换行了😂😂
guanzhangzhang
3 天前
gofmt 直接避免类似 c 语言{在行尾还是新起一行这种无意义争议的事情
loading
3 天前
我还以为你是问 defer 是不是放 err!=nil 后面,没想到你甚至都没保存。

vscode 设置保存后格式化,你基本不会问这个问题。
yqs112358
2 天前
这个其实无所谓,看习惯了就好。go 的哲学跟其他语言还是有一定区别的,上手得熟悉一段时间
yqs112358
2 天前
个人其实更喜欢 C++那套 RAII 的玩意儿,由库作者负责保证资源的安全释放。go 虽然不太用这种不过 defer 也不失为一种好方法,至少比到处塞满 if 要好很多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1092523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX