Files

37 lines
559 B
Go

package main
import (
"fmt"
"os"
"runtime"
"time"
)
type FileWrapper struct {
file *os.File
}
func NewFileWrapper(path string) *FileWrapper {
file, _ := os.OpenFile(path, os.O_RDONLY|os.O_CREATE, 0666)
ptr := &FileWrapper{file: file}
runtime.AddCleanup(ptr, func(f *os.File) { // replace with FileWrapper
fmt.Println("Closing file:", f.Name())
_ = f.Close()
}, ptr.file)
return ptr
}
func main() {
obj := NewFileWrapper(os.DevNull)
_ = obj
obj = nil
runtime.GC()
time.Sleep(time.Second)
fmt.Println("Object is collected by GC")
}