I have experience working with parsing binary files in general (Bitcoin messages/transactions/blocks, Minecraft NBT files, Myst/Riven Mohawk archives, etc.), and would be glad to help explain that if you need help getting started!
In general, parsing binary data is made easier by a "readable stream" sort of class that has an internal buffer of data, a pointer to where it is in the buffer, and the means to pull out different structures of data at the current pointer. Since Bitcoin has binary structures like "variable integers" and "variable strings", which don't always take up the same amount of space in the binary file, you need to read the stream in order to determine how far forward to skip after reading that structure.
Python has the Struct classes/methods to make binary data parsing easier, though I'm not sure what Golang has to work with by default.