gpt4 book ai didi

go - 我们可以像在 python 中那样在 Go 中创建上下文管理器吗?

转载 作者:IT王子 更新时间:2023-10-29 01:52:37 26 4
gpt4 key购买 nike

在 Python 中,我发现上下文管理器非常有用。我试图在 Go 中找到相同的内容。

例如:

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

其中 open 是 python 中处理进入和退出的上下文管理器,它隐式地负责关闭打开的文件。

而不是我们明确地这样做:

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

这也可以在 Go 中完成吗?提前致谢。

最佳答案

不,你不能,但你可以用一点包装函数来创造同样的错觉:

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)
}

关于go - 我们可以像在 python 中那样在 Go 中创建上下文管理器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com