I was working on a problem and wanted to read a very specific chunck of file. I read Go documentation and came through io.LimitReader. According to official documentation, “A LimitedReader reads from R but limits the amount of data returned to just N bytes. Each call to Read updates N to reflect the new amount remaining.” and this is what I wanted.
f, _ := os.Open("largefile.bin")
f.Seek(123, 0)
b := make([]byte, 150-123) // remaining length after seek
f.Read(&b)
f.Close()
buf := bytes.NewBuffer(b) // create buffer with the needed bytes
var a float32
binary.Read(buf, binary.LittleEndian, &a)
binary.Read(io.LimitReader(r, 150-123), binary.LittleEndian, &a)