X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/src/encoding/gob
opt
/
golang
/
1.17.2
/
src
/
encoding
/
gob
/
📁
..
📄
codec_test.go
(35.03 KB)
📄
debug.go
(18.21 KB)
📄
dec_helpers.go
(13.32 KB)
📄
decgen.go
(4.8 KB)
📄
decode.go
(38.99 KB)
📄
decoder.go
(6.8 KB)
📄
doc.go
(16.72 KB)
📄
dump.go
(575 B)
📄
enc_helpers.go
(9.94 KB)
📄
encgen.go
(3.76 KB)
📄
encode.go
(20.02 KB)
📄
encoder.go
(7.76 KB)
📄
encoder_test.go
(26.97 KB)
📄
error.go
(1.36 KB)
📄
example_encdec_test.go
(1.54 KB)
📄
example_interface_test.go
(2.14 KB)
📄
example_test.go
(1.41 KB)
📄
gobencdec_test.go
(18.38 KB)
📄
timing_test.go
(6.16 KB)
📄
type.go
(26.65 KB)
📄
type_test.go
(6.14 KB)
Editing: example_interface_test.go
// 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" "math" ) type Point struct { X, Y int } func (p Point) Hypotenuse() float64 { return math.Hypot(float64(p.X), float64(p.Y)) } type Pythagoras interface { Hypotenuse() float64 } // This example shows how to encode an interface value. The key // distinction from regular types is to register the concrete type that // implements the interface. func Example_interface() { var network bytes.Buffer // Stand-in for the network. // We must register the concrete type for the encoder and decoder (which would // normally be on a separate machine from the encoder). On each end, this tells the // engine which concrete type is being sent that implements the interface. gob.Register(Point{}) // Create an encoder and send some values. enc := gob.NewEncoder(&network) for i := 1; i <= 3; i++ { interfaceEncode(enc, Point{3 * i, 4 * i}) } // Create a decoder and receive some values. dec := gob.NewDecoder(&network) for i := 1; i <= 3; i++ { result := interfaceDecode(dec) fmt.Println(result.Hypotenuse()) } // Output: // 5 // 10 // 15 } // interfaceEncode encodes the interface value into the encoder. func interfaceEncode(enc *gob.Encoder, p Pythagoras) { // The encode will fail unless the concrete type has been // registered. We registered it in the calling function. // Pass pointer to interface so Encode sees (and hence sends) a value of // interface type. If we passed p directly it would see the concrete type instead. // See the blog post, "The Laws of Reflection" for background. err := enc.Encode(&p) if err != nil { log.Fatal("encode:", err) } } // interfaceDecode decodes the next interface value from the stream and returns it. func interfaceDecode(dec *gob.Decoder) Pythagoras { // The decode will fail unless the concrete type on the wire has been // registered. We registered it in the calling function. var p Pythagoras err := dec.Decode(&p) if err != nil { log.Fatal("decode:", err) } return p }
Upload File
Create Folder