diff options
Diffstat (limited to 'src/encoding/gob/example_test.go')
| -rw-r--r-- | src/encoding/gob/example_test.go | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/src/encoding/gob/example_test.go b/src/encoding/gob/example_test.go new file mode 100644 index 000000000..020352cee --- /dev/null +++ b/src/encoding/gob/example_test.go @@ -0,0 +1,60 @@ +// 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} +} | 
