aboutsummaryrefslogtreecommitdiffstats
path: root/rlp/encoder_example_test.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-01-16 05:28:48 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-01-16 05:28:48 +0800
commit52bb14954190fd9041eda866e1f70b4b60eee521 (patch)
tree98d2496f6ea4a409493328043e323c35eb2abf1c /rlp/encoder_example_test.go
parentbb55307a9d8fa73b0fbc0727f8b80925a87627b7 (diff)
parent29c46cdf3405d6462deb2cb5cef87b1b4fb2bdc7 (diff)
downloadgo-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.gz
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.bz2
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.lz
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.xz
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.tar.zst
go-tangerine-52bb14954190fd9041eda866e1f70b4b60eee521.zip
Merge pull request #257 from fjl/rlp-encoder
rlp: add functions for encoding
Diffstat (limited to 'rlp/encoder_example_test.go')
-rw-r--r--rlp/encoder_example_test.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/rlp/encoder_example_test.go b/rlp/encoder_example_test.go
new file mode 100644
index 000000000..57bad604d
--- /dev/null
+++ b/rlp/encoder_example_test.go
@@ -0,0 +1,38 @@
+package rlp
+
+import (
+ "fmt"
+ "io"
+)
+
+type MyCoolType struct {
+ Name string
+ a, b uint
+}
+
+// EncodeRLP writes x as RLP list [a, b] that omits the Name field.
+func (x *MyCoolType) EncodeRLP(w io.Writer) (err error) {
+ // Note: the receiver can be a nil pointer. This allows you to
+ // control the encoding of nil, but it also means that you have to
+ // check for a nil receiver.
+ if x == nil {
+ err = Encode(w, []uint{0, 0})
+ } else {
+ err = Encode(w, []uint{x.a, x.b})
+ }
+ return err
+}
+
+func ExampleEncoder() {
+ var t *MyCoolType // t is nil pointer to MyCoolType
+ bytes, _ := EncodeToBytes(t)
+ fmt.Printf("%v → %X\n", t, bytes)
+
+ t = &MyCoolType{Name: "foobar", a: 5, b: 6}
+ bytes, _ = EncodeToBytes(t)
+ fmt.Printf("%v → %X\n", t, bytes)
+
+ // Output:
+ // <nil> → C28080
+ // &{foobar 5 6} → C20506
+}