2012년 4월 30일 월요일

gob

gob.

네트워크상으로 데이터를 전송할때나,
데이터를 파일에 저장할때 엔코딩/디코딩작업이 필요하다.

MFC 에서 Serialize 라는 용어로 표현되었던 그기능.

GO 에서는 gob 이 담당한다.

rpc package 는 gob 을 사용하여 구현되었다고 한다.





package main


import (
"bytes"
"encoding/gob"
"fmt"
"log"
)


type P struct {
X, Y, Z int
Name string
}


type Q struct {
X, Y *int32
Name string
}


func main() {


var network bytes.Buffer
enc := gob.NewEncoder(&network)
dec := gob.NewDecoder(&network)

err := enc.Encode(P{3, 4, 5, "Pythagoras"})
if err != nil {
log.Fatal("encode error:", err)
}

var q Q
err = dec.Decode(&q)
if err != nil {
log.Fatal("decode error:", err)
}

fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y)
}