Skip to content

Instantly share code, notes, and snippets.

@maxwellgithinji
Last active July 30, 2020 14:02
Show Gist options
  • Save maxwellgithinji/cb8c4d2bff57cfffac4551e21bb0be73 to your computer and use it in GitHub Desktop.
Save maxwellgithinji/cb8c4d2bff57cfffac4551e21bb0be73 to your computer and use it in GitHub Desktop.
package main
import (
"io"
"os"
)
type writeFile struct {
f *os.File
err error
}
func newWriteFile(filename string) *writeFile {
f, err := os.Create(filename)
return &writeFile{
f: f,
err: err,
}
}
func (w *writeFile) WriteString(text string) {
if w.err != nil {
return
}
_, err := io.WriteString(w.f, text)
if err != nil {
w.err = err
}
}
func (w *writeFile) Close() {
if w.err != nil {
return
}
err := w.f.Close()
if err != nil {
w.err = err
}
}
func (w *writeFile) Err() error {
return w.err
}
func main() {
f := newWriteFile("file.txt")
f.WriteString("Hello World")
f.WriteString("More Text!")
f.Close()
err := f.Err()
if err != nil {
panic(err)
}
//Avoid checking error after every line, do it after processing like the code above
// f, err := os.Create("file.txt")
// if err != nil {
// panic(err)
// }
// _, err = io.WriteString(f, "Hello World")
// if err != nil {
// panic(err)
// }
// _, err = io.WriteString(f, "More Text!")
// if err != nil {
// panic(err)
// }
// err = f.Close()
// if err != nil {
// panic(err)
// }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment