Prechádzať zdrojové kódy

get encoder without get type first

Tao Wen 7 rokov pred
rodič
commit
d346ea6e55
1 zmenil súbory, kde vykonal 6 pridanie a 2 odobranie
  1. 6 2
      reflect.go

+ 6 - 2
reflect.go

@@ -75,8 +75,12 @@ func (stream *Stream) WriteVal(val interface{}) {
 		stream.WriteNil()
 		return
 	}
-	typ := reflect2.TypeOf(val)
-	encoder := stream.cfg.EncoderOf(typ)
+	cacheKey := reflect2.RTypeOf(val)
+	encoder := stream.cfg.getEncoderFromCache(cacheKey)
+	if encoder == nil {
+		typ := reflect2.TypeOf(val)
+		encoder = stream.cfg.EncoderOf(typ)
+	}
 	encoder.Encode(reflect2.PtrOf(val), stream)
 }