100-go-mistakes/10-standard-lib/79-closing-resources/os-file/main.go
2021-12-27 15:56:17 +01:00

56 lines
897 B
Go

package main
import (
"log"
"os"
)
func listing1(filename string) error {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
return err
}
defer func() {
if err := f.Close(); err != nil {
log.Printf("failed to close file: %v\n", err)
}
}()
return nil
}
func writeToFile1(filename string, content []byte) (err error) {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
return err
}
defer func() {
closeErr := f.Close()
if err == nil {
err = closeErr
}
}()
_, err = f.Write(content)
return
}
func writeToFile2(filename string, content []byte) (err error) {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
return err
}
defer func() {
_ = f.Close()
}()
_, err = f.Write(content)
if err != nil {
return err
}
return f.Sync()
}