gob

Documentação de gob

A package gob implementa a codificação/decodificação de valores Go para/de formato binário.

Save e Load de arquivos formato gob

package main

import (
    "gob"
    "bytes"
    "io/ioutil"
    "fmt"
)

type MyStruct struct {
  A int
  B string
}

func main() {
    my := MyStruct {
        A:  1,
        B:  "X",
    }
    my1 := new(MyStruct)
    // Salvando a struct my (MyStruct) no arquivo "filename".
    saveToFile(my, "filename")
    // Recuperando a struct my em my1 do arquivo "filename".
    loadFromFile(my1, "filename")
        fmt.Printf("A: %d, B: %s\n", my1.A, my1.B) //=> A: 1, B: X
}

func saveToFile(data interface{}, filename string) {
    b := new(bytes.Buffer)
    enc := gob.NewEncoder(b)
    enc.Encode(data)
    ioutil.WriteFile(filename, b.Bytes(), 0600)
}

func loadFromFile(data interface{}, filename string) {
    doc, _ := ioutil.ReadFile(filename)
    dec := gob.NewDecoder(bytes.NewBuffer(doc))
    dec.Decode(data)
}

Comments