I'm learning Go, and am trying to read the first four bytes of a file. I'm wanting to check if the file contains a specific file header that I'm looking for. My code does not display the bytes that I'm expecting, though. Does anybody know why the following code might not work? It does read in some bytes, but they're not bytes I recognized or expected to see. They're not random or anything, because they're the same every time I run it, so it's probably a pointer to something else or something.
Also, I realize I'm ignoring errors but that's because I went into hack-mode while this wasn't working and removed as much of the cruft as I could, trying to get down to the issue.
package main
import (
"os"
"io"
"fmt"
)
type RoflFile struct {
identifier []byte
}
func main() {
arguments := os.Args[1:]
if len(arguments) != 1 {
fmt.Println("Usage: <path-to-rofl>")
return
}
inputfile := arguments[0]
if _, err := os.Stat(inputfile); os.IsNotExist(err) {
fmt.Printf("Error: the input file could not be found: %s", inputfile)
return
}
rofl := new(RoflFile)
rofl.identifier = make([]byte, 4)
// open the input file so that we can pull out data
f, _ := os.Open(inputfile)
// read in the file identifier
io.ReadAtLeast(f, rofl.identifier, 4)
f.Close()
fmt.Printf("Got: %+v", rofl)
}