aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/gob/encode.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/gob/encode.go')
-rw-r--r--src/encoding/gob/encode.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/encoding/gob/encode.go b/src/encoding/gob/encode.go
index ed3494218c..15932aabe0 100644
--- a/src/encoding/gob/encode.go
+++ b/src/encoding/gob/encode.go
@@ -440,11 +440,14 @@ func (enc *Encoder) encodeGobEncoder(b *encBuffer, ut *userTypeInfo, v reflect.V
// We know it's one of these.
switch ut.externalEnc {
case xGob:
- data, err = v.Interface().(GobEncoder).GobEncode()
+ gobEncoder, _ := reflect.TypeAssert[GobEncoder](v)
+ data, err = gobEncoder.GobEncode()
case xBinary:
- data, err = v.Interface().(encoding.BinaryMarshaler).MarshalBinary()
+ binaryMarshaler, _ := reflect.TypeAssert[encoding.BinaryMarshaler](v)
+ data, err = binaryMarshaler.MarshalBinary()
case xText:
- data, err = v.Interface().(encoding.TextMarshaler).MarshalText()
+ textMarshaler, _ := reflect.TypeAssert[encoding.TextMarshaler](v)
+ data, err = textMarshaler.MarshalText()
}
if err != nil {
error_(err)