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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错