Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
example_encdec_test.go62 linesDownload Raw Back to gob
1// Copyright 2013 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5package gob_test6 7import (8	"bytes"9	"encoding/gob"10	"fmt"11	"log"12)13 14// The Vector type has unexported fields, which the package cannot access.15// We therefore write a BinaryMarshal/BinaryUnmarshal method pair to allow us16// to send and receive the type with the gob package. These interfaces are17// defined in the "encoding" package.18// We could equivalently use the locally defined GobEncode/GobDecoder19// interfaces.20type Vector struct {21	x, y, z int22}23 24func (v Vector) MarshalBinary() ([]byte, error) {25	// A simple encoding: plain text.26	var b bytes.Buffer27	fmt.Fprintln(&b, v.x, v.y, v.z)28	return b.Bytes(), nil29}30 31// UnmarshalBinary modifies the receiver so it must take a pointer receiver.32func (v *Vector) UnmarshalBinary(data []byte) error {33	// A simple encoding: plain text.34	b := bytes.NewBuffer(data)35	_, err := fmt.Fscanln(b, &v.x, &v.y, &v.z)36	return err37}38 39// This example transmits a value that implements the custom encoding and decoding methods.40func Example_encodeDecode() {41	var network bytes.Buffer // Stand-in for the network.42 43	// Create an encoder and send a value.44	enc := gob.NewEncoder(&network)45	err := enc.Encode(Vector{3, 4, 5})46	if err != nil {47		log.Fatal("encode:", err)48	}49 50	// Create a decoder and receive a value.51	dec := gob.NewDecoder(&network)52	var v Vector53	err = dec.Decode(&v)54	if err != nil {55		log.Fatal("decode:", err)56	}57	fmt.Println(v)58 59	// Output:60	// {3 4 5}61}62 
codekingpro/portable-devtools · Team Ai