60 lines · 1.4 KB · Go
RawDownload
// 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}}