我正在学习 Go,并试图读取文件的前四个字节。我想检查文件是否包含我正在寻找的特定文件头。不过,我的代码没有显示我期望的字节。有谁知道为什么下面的代码可能不起作用?它确实读取了一些字节,但它们不是我识别或期望看到的字节。它们不是随机的或任何东西,因为每次我运行它时它们都是相同的,所以它可能是指向其他东西或其他东西的指针。
另外,我意识到我忽略了错误,但那是因为我进入了 hack 模式,而这不起作用并尽可能多地删除了垃圾,试图解决这个问题。
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)
}