瀏覽代碼

get encoder without get type first

Tao Wen 7 年之前
父節點
當前提交
d346ea6e55
共有 1 個文件被更改,包括 6 次插入2 次删除
  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)
 }