Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Golang: write []int to file

Tags:

file

slice

go

I have some data in p []int, I want to save/load it to/from file. Should i convert this slice to []byte and use (if yes, how?)

func (f *File) Read(b []byte) (n int, err Error)
func (f *File) Write(b []byte) (n int, err error)

or there are other way to save []int to file?

I read this How to read/write from/to file using golang?, and it didn't help.

like image 805
Sam Avatar asked Apr 01 '14 14:04

Sam


1 Answers

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).

like image 87
Not_a_Golfer Avatar answered Oct 07 '22 18:10

Not_a_Golfer