github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/encoding/gob/example_test.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package gob_test 6 7 import ( 8 "github.com/shogo82148/std/bytes" 9 "github.com/shogo82148/std/encoding/gob" 10 "github.com/shogo82148/std/fmt" 11 "github.com/shogo82148/std/log" 12 ) 13 14 // この例は、パッケージの基本的な使用方法を示しています: エンコーダを作成し、 15 // いくつかの値を送信し、デコーダでそれらを受信します。 16 func Example_basic() { 17 // エンコーダとデコーダを初期化します。通常、encとdecはネットワーク接続にバインドされ、 18 // エンコーダとデコーダは別々のプロセスで実行されます。 19 var network bytes.Buffer // ネットワーク接続の代わり 20 enc := gob.NewEncoder(&network) // ネットワークに書き込みます。 21 dec := gob.NewDecoder(&network) // ネットワークから読み取ります。 22 23 // いくつかの値をエンコード(送信)します。 24 err := enc.Encode(P{3, 4, 5, "Pythagoras"}) 25 if err != nil { 26 log.Fatal("encode error:", err) 27 } 28 err = enc.Encode(P{1782, 1841, 1922, "Treehouse"}) 29 if err != nil { 30 log.Fatal("encode error:", err) 31 } 32 33 // 値をデコード(受信)し、印刷します。 34 var q Q 35 err = dec.Decode(&q) 36 if err != nil { 37 log.Fatal("decode error 1:", err) 38 } 39 fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) 40 err = dec.Decode(&q) 41 if err != nil { 42 log.Fatal("decode error 2:", err) 43 } 44 fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) 45 46 // Output: 47 // "Pythagoras": {3, 4} 48 // "Treehouse": {1782, 1841} 49 }