...
Run Format

Source file src/encoding/gob/example_test.go

Documentation: encoding/gob

  // 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}
  }
  

View as plain text