V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
nativeBoy
V2EX  ›  Go 编程语言

go 语言里 defer 的位置

  •  
  •   nativeBoy · 2024-11-25 17:54:33 +08:00 · 2618 次点击
    这是一个创建于 377 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    ctx, cancel := context.WithTimeout(); defer cancel()
    
    6 条回复    2024-12-12 07:35:28 +08:00
    nativeBoy
        1
    nativeBoy  
    OP
       2024-11-25 17:58:07 +08:00
    好吧,go fmt 自动给我换行了😂😂
    guanzhangzhang
        2
    guanzhangzhang  
       2024-11-25 18:59:27 +08:00
    gofmt 直接避免类似 c 语言{在行尾还是新起一行这种无意义争议的事情
    loading
        3
    loading  
       2024-11-25 19:57:54 +08:00
    我还以为你是问 defer 是不是放 err!=nil 后面,没想到你甚至都没保存。

    vscode 设置保存后格式化,你基本不会问这个问题。
    yqs112358
        4
    yqs112358  
       2024-11-25 21:41:53 +08:00
    这个其实无所谓,看习惯了就好。go 的哲学跟其他语言还是有一定区别的,上手得熟悉一段时间
    yqs112358
        5
    yqs112358  
       2024-11-25 21:45:27 +08:00
    个人其实更喜欢 C++那套 RAII 的玩意儿,由库作者负责保证资源的安全释放。go 虽然不太用这种不过 defer 也不失为一种好方法,至少比到处塞满 if 要好很多
    uid106
        6
    uid106  
       361 天前 via iPhone
    一顿随便写,之后 gofmt -s -w . 板板正正的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5270 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    ♥ Do have faith in what you're doing.