diff options
author | Russ Cox <rsc@golang.org> | 2010-06-21 13:19:29 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-06-21 13:19:29 -0700 |
commit | 4cc75513542d50e96e54b8218bf1bd375205c2d9 (patch) | |
tree | c97d37101199813a11bb01a9f0a0fcccac4bc763 /src/pkg/gob/encode.go | |
parent | fa47c8634b287c59a8fb1b01880f63985356f52d (diff) | |
download | golang-4cc75513542d50e96e54b8218bf1bd375205c2d9.tar.gz |
reflect: add Type.Bits method, add tags to prohibit conversions
gob: substitute slice for map
R=r
CC=golang-dev
http://codereview.appspot.com/1699045
Diffstat (limited to 'src/pkg/gob/encode.go')
-rw-r--r-- | src/pkg/gob/encode.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/pkg/gob/encode.go b/src/pkg/gob/encode.go index 93f9e509b..76032389e 100644 --- a/src/pkg/gob/encode.go +++ b/src/pkg/gob/encode.go @@ -601,7 +601,7 @@ func encodeMap(b *bytes.Buffer, rt reflect.Type, p uintptr, keyOp, elemOp encOp, return state.err } -var encOpMap = map[reflect.Kind]encOp{ +var encOpMap = []encOp{ reflect.Bool: encBool, reflect.Int: encInt, reflect.Int8: encInt8, @@ -624,8 +624,12 @@ var encOpMap = map[reflect.Kind]encOp{ // the indirection count to reach it. func encOpFor(rt reflect.Type) (encOp, int, os.Error) { typ, indir := indirect(rt) - op, ok := encOpMap[typ.Kind()] - if !ok { + var op encOp + k := typ.Kind() + if int(k) < len(encOpMap) { + op = encOpMap[k] + } + if op == nil { // Special cases switch t := typ.(type) { case *reflect.SliceType: |