私は Go を学んでいて、ファイルの最初の 4 バイトを読み込もうとしています。探している特定のファイル ヘッダーがファイルに含まれているかどうかを確認したいと考えています。ただし、私のコードは期待するバイト数を表示しません。次のコードが機能しない理由を知っている人はいますか? いくつかのバイトを読み取りますが、それらは私が認識した、または期待したバイトではありません。実行するたびに同じなので、ランダムでも何でもないので、おそらく何か他の何かへのポインターです。
また、エラーを無視していることに気づきましたが、これは、これが機能していないときにハックモードに入り、問題に取り掛かろうとして、できる限り多くのクラフトを削除したためです。
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)
}