| // Copyright 2013 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package gob_test | |
| import ( | |
| "bytes" | |
| "encoding/gob" | |
| "fmt" | |
| "log" | |
| ) | |
| type P struct { | |
| X, Y, Z int | |
| Name string | |
| } | |
| type Q struct { | |
| X, Y *int32 | |
| Name string | |
| } | |
| // This example shows the basic usage of the package: Create an encoder, | |
| // transmit some values, receive them with a decoder. | |
| func Example_basic() { | |
| // Initialize the encoder and decoder. Normally enc and dec would be | |
| // bound to network connections and the encoder and decoder would | |
| // run in different processes. | |
| var network bytes.Buffer // Stand-in for a network connection | |
| enc := gob.NewEncoder(&network) // Will write to network. | |
| dec := gob.NewDecoder(&network) // Will read from network. | |
| // Encode (send) some values. | |
| err := enc.Encode(P{3, 4, 5, "Pythagoras"}) | |
| if err != nil { | |
| log.Fatal("encode error:", err) | |
| } | |
| err = enc.Encode(P{1782, 1841, 1922, "Treehouse"}) | |
| if err != nil { | |
| log.Fatal("encode error:", err) | |
| } | |
| // Decode (receive) and print the values. | |
| var q Q | |
| err = dec.Decode(&q) | |
| if err != nil { | |
| log.Fatal("decode error 1:", err) | |
| } | |
| fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) | |
| err = dec.Decode(&q) | |
| if err != nil { | |
| log.Fatal("decode error 2:", err) | |
| } | |
| fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) | |
| // Output: | |
| // "Pythagoras": {3, 4} | |
| // "Treehouse": {1782, 1841} | |
| } | |