在循环内部执行defer语句会发生什么?

提问者:帅平 问题分类:面试刷题
在循环内部执行defer语句会发生什么?
2 个回答
酷味有余
酷味有余
defer 在函数退出时才能执行,在 for 执行 defer 会导致资源延迟释放。
func main() {
    for i := 0; i < 5; i++ {
        func() {
            f, err := os.Open("/path/to/file")
            if err != nil {
                log.Fatal(err)
            }
            defer f.Close()
        }()
    }
}
func 是一个局部函数,在局部函数里面执行 defer 将不会有问题。
发布于:5个月前 (11-29) IP属地:四川省
我来回答