gobuch/best-practices/error-handling-3/main.go
2020-08-21 06:26:40 +02:00

49 lines
598 B
Go

package main
import (
"fmt"
"io"
"log"
"os"
)
func NewWriter(w io.Writer) *writer {
return &writer{w, nil}
}
type writer struct {
w io.Writer
err error
}
func (w *writer) write(text string) {
if w.err != nil {
return
}
_, w.err = fmt.Fprintln(w.w, text)
}
func (w *writer) Err() error {
return w.err
}
func main() {
f, err := os.OpenFile("test.txt", os.O_WRONLY, os.ModePerm)
if err != nil {
log.Fatal(err)
}
defer f.Close()
w := NewWriter(f)
w.write("Hello world 3")
w.write("Hello world 3")
if err = w.Err(); err != nil {
log.Fatal(err)
}
fmt.Println(f)
}