From d26887310cc3f70beb362cb9228679e54f129316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Mengu=C3=A9?= Date: Fri, 7 Oct 2022 14:28:37 +0200 Subject: [PATCH] Reduce init time allocation when declaring types used for reflect (#821) In declaration of types used for reflect, use reflect.TypeOf((*T)).Elem() instead of reflect.TypeOf(T{}) to avoid init-time allocations. See related stdlib issue: https://github.com/golang/go/issues/55973 --- types.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/types.go b/types.go index 630a4546..3c6b8fe5 100644 --- a/types.go +++ b/types.go @@ -6,9 +6,9 @@ import ( "time" ) -var timeType = reflect.TypeOf(time.Time{}) -var textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem() -var textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem() -var mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{}) -var sliceInterfaceType = reflect.TypeOf([]interface{}{}) +var timeType = reflect.TypeOf((*time.Time)(nil)).Elem() +var textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() +var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() +var mapStringInterfaceType = reflect.TypeOf(map[string]interface{}(nil)) +var sliceInterfaceType = reflect.TypeOf([]interface{}(nil)) var stringType = reflect.TypeOf("")