The simplest way to read a whole file is:
d, err := ioutil.ReadFile("foo.txt")
if err != nil {
log.Fatalf("ioutil.ReadFile failed with '%s'\\n", err)
}
fmt.Printf("Size of 'foo.txt': %d bytes\\n", len(d))
f, err := os.Open("foo.txt")
if err != nil {
log.Fatalf("os.Open failed with '%s'\\n", err)
}
defer f.Close()
Open returns *os.File which implements io.Reader and io.Closer interfaces.
You should always close files to avoid leaking file descriptors. defer is perfect for ensuring Close will be called on exit of the function.