If interchanging the format (between languages other than go) or reading it as a stream is not important to you, just use the gob encoder and decoder.
http://golang.org/pkg/encoding/gob/
The idea is that you create an encoder around a writer, or a decoder around a reader, and then just ask them to encode or decode a struct. Encoding goes something like this:
p := []int{1,2,3,4} encoder := gob.NewEncoder(myFileWriter) err = encoder.Encode(p) if err != nil { panic(err) }
decoding works just the opposite way:
decoder := gob.NewDecoder(myFileReader) p := []int{} err = decoder.Decode(&p) if err != nil { panic(err) }
Alternatively, you can use similar methods available in the standard library, for storing the data as JSON or XML, which allow you more easily to debug things, and open the data from other languages (at the cost of size and efficiency).
inttype has different size on different platforms, so what precision should be stored?[]int32.ints which might have different representation from one hardware platform to another), on the other hand, data on a storage medium has to have certain format. And it's you who decides which exactly. This might be a JSON file, XML file, a database, a plain binary file with custom format, a plain text file with custom format -- the possibilities are endless.