duanjie6912 2016-05-21 21:40
浏览 39
已采纳

我们可以像在python中一样在Go中创建上下文管理器吗

In python, I find the context managers really helpful. I was trying to find the same in Go.

e.g:

with open("filename") as f:
    do something here

where open is a context manager in python handling the entry and exit, which implicitly takes care of closing the file opened.

Instead of we explicitly doing like this:

f := os.Open("filename")
//do something here
defer f.Close()

Can this be done in Go as well ? Thanks in advance.

  • 写回答

1条回答 默认 最新

  • dongyi1921 2016-05-21 21:43
    关注

    No, you can't, but you can create the same illusion with a little wrapper func:

    func WithFile(fname string, fn func(f *os.File) error) error {
        f, err := os.Open(fname)
        if err != nil {
            return err
        }
        defer f.Close()
        return fn(f)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退