Skip to content

Commit f492c14

Browse files
jackcclaude
andcommitted
Use reflect.TypeFor instead of reflect.TypeOf for static types
reflect.TypeFor[T]() is clearer and avoids constructing throwaway values just to extract their type. Applied to all map initializations and switch cases where the type is known at compile time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ad8fb08 commit f492c14

3 files changed

Lines changed: 55 additions & 55 deletions

File tree

pgtype/convert.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,19 +90,19 @@ func GetAssignToDstType(dst any) (any, bool) {
9090

9191
func init() {
9292
kindTypes = map[reflect.Kind]reflect.Type{
93-
reflect.Bool: reflect.TypeOf(false),
94-
reflect.Float32: reflect.TypeOf(float32(0)),
95-
reflect.Float64: reflect.TypeOf(float64(0)),
96-
reflect.Int: reflect.TypeOf(int(0)),
97-
reflect.Int8: reflect.TypeOf(int8(0)),
98-
reflect.Int16: reflect.TypeOf(int16(0)),
99-
reflect.Int32: reflect.TypeOf(int32(0)),
100-
reflect.Int64: reflect.TypeOf(int64(0)),
101-
reflect.Uint: reflect.TypeOf(uint(0)),
102-
reflect.Uint8: reflect.TypeOf(uint8(0)),
103-
reflect.Uint16: reflect.TypeOf(uint16(0)),
104-
reflect.Uint32: reflect.TypeOf(uint32(0)),
105-
reflect.Uint64: reflect.TypeOf(uint64(0)),
106-
reflect.String: reflect.TypeOf(""),
93+
reflect.Bool: reflect.TypeFor[bool](),
94+
reflect.Float32: reflect.TypeFor[float32](),
95+
reflect.Float64: reflect.TypeFor[float64](),
96+
reflect.Int: reflect.TypeFor[int](),
97+
reflect.Int8: reflect.TypeFor[int8](),
98+
reflect.Int16: reflect.TypeFor[int16](),
99+
reflect.Int32: reflect.TypeFor[int32](),
100+
reflect.Int64: reflect.TypeFor[int64](),
101+
reflect.Uint: reflect.TypeFor[uint](),
102+
reflect.Uint8: reflect.TypeFor[uint8](),
103+
reflect.Uint16: reflect.TypeFor[uint16](),
104+
reflect.Uint32: reflect.TypeFor[uint32](),
105+
reflect.Uint64: reflect.TypeFor[uint64](),
106+
reflect.String: reflect.TypeFor[string](),
107107
}
108108
}

pgtype/pgtype.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -525,20 +525,20 @@ type SkipUnderlyingTypePlanner interface {
525525
}
526526

527527
var elemKindToPointerTypes map[reflect.Kind]reflect.Type = map[reflect.Kind]reflect.Type{
528-
reflect.Int: reflect.TypeOf(new(int)),
529-
reflect.Int8: reflect.TypeOf(new(int8)),
530-
reflect.Int16: reflect.TypeOf(new(int16)),
531-
reflect.Int32: reflect.TypeOf(new(int32)),
532-
reflect.Int64: reflect.TypeOf(new(int64)),
533-
reflect.Uint: reflect.TypeOf(new(uint)),
534-
reflect.Uint8: reflect.TypeOf(new(uint8)),
535-
reflect.Uint16: reflect.TypeOf(new(uint16)),
536-
reflect.Uint32: reflect.TypeOf(new(uint32)),
537-
reflect.Uint64: reflect.TypeOf(new(uint64)),
538-
reflect.Float32: reflect.TypeOf(new(float32)),
539-
reflect.Float64: reflect.TypeOf(new(float64)),
540-
reflect.String: reflect.TypeOf(new(string)),
541-
reflect.Bool: reflect.TypeOf(new(bool)),
528+
reflect.Int: reflect.TypeFor[*int](),
529+
reflect.Int8: reflect.TypeFor[*int8](),
530+
reflect.Int16: reflect.TypeFor[*int16](),
531+
reflect.Int32: reflect.TypeFor[*int32](),
532+
reflect.Int64: reflect.TypeFor[*int64](),
533+
reflect.Uint: reflect.TypeFor[*uint](),
534+
reflect.Uint8: reflect.TypeFor[*uint8](),
535+
reflect.Uint16: reflect.TypeFor[*uint16](),
536+
reflect.Uint32: reflect.TypeFor[*uint32](),
537+
reflect.Uint64: reflect.TypeFor[*uint64](),
538+
reflect.Float32: reflect.TypeFor[*float32](),
539+
reflect.Float64: reflect.TypeFor[*float64](),
540+
reflect.String: reflect.TypeFor[*string](),
541+
reflect.Bool: reflect.TypeFor[*bool](),
542542
}
543543

544544
type underlyingTypeScanPlan struct {
@@ -1374,23 +1374,23 @@ func TryWrapDerefPointerEncodePlan(value any) (plan WrappedEncodePlanNextSetter,
13741374
}
13751375

13761376
var kindToTypes map[reflect.Kind]reflect.Type = map[reflect.Kind]reflect.Type{
1377-
reflect.Int: reflect.TypeOf(int(0)),
1378-
reflect.Int8: reflect.TypeOf(int8(0)),
1379-
reflect.Int16: reflect.TypeOf(int16(0)),
1380-
reflect.Int32: reflect.TypeOf(int32(0)),
1381-
reflect.Int64: reflect.TypeOf(int64(0)),
1382-
reflect.Uint: reflect.TypeOf(uint(0)),
1383-
reflect.Uint8: reflect.TypeOf(uint8(0)),
1384-
reflect.Uint16: reflect.TypeOf(uint16(0)),
1385-
reflect.Uint32: reflect.TypeOf(uint32(0)),
1386-
reflect.Uint64: reflect.TypeOf(uint64(0)),
1387-
reflect.Float32: reflect.TypeOf(float32(0)),
1388-
reflect.Float64: reflect.TypeOf(float64(0)),
1389-
reflect.String: reflect.TypeOf(""),
1390-
reflect.Bool: reflect.TypeOf(false),
1391-
}
1392-
1393-
var byteSliceType = reflect.TypeOf([]byte{})
1377+
reflect.Int: reflect.TypeFor[int](),
1378+
reflect.Int8: reflect.TypeFor[int8](),
1379+
reflect.Int16: reflect.TypeFor[int16](),
1380+
reflect.Int32: reflect.TypeFor[int32](),
1381+
reflect.Int64: reflect.TypeFor[int64](),
1382+
reflect.Uint: reflect.TypeFor[uint](),
1383+
reflect.Uint8: reflect.TypeFor[uint8](),
1384+
reflect.Uint16: reflect.TypeFor[uint16](),
1385+
reflect.Uint32: reflect.TypeFor[uint32](),
1386+
reflect.Uint64: reflect.TypeFor[uint64](),
1387+
reflect.Float32: reflect.TypeFor[float32](),
1388+
reflect.Float64: reflect.TypeFor[float64](),
1389+
reflect.String: reflect.TypeFor[string](),
1390+
reflect.Bool: reflect.TypeFor[bool](),
1391+
}
1392+
1393+
var byteSliceType = reflect.TypeFor[[]byte]()
13941394

13951395
type underlyingTypeEncodePlan struct {
13961396
nextValueType reflect.Type

stdlib/sql.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -699,25 +699,25 @@ func (r *Rows) ColumnTypeScanType(index int) reflect.Type {
699699

700700
switch fd.DataTypeOID {
701701
case pgtype.Float8OID:
702-
return reflect.TypeOf(float64(0))
702+
return reflect.TypeFor[float64]()
703703
case pgtype.Float4OID:
704-
return reflect.TypeOf(float32(0))
704+
return reflect.TypeFor[float32]()
705705
case pgtype.Int8OID:
706-
return reflect.TypeOf(int64(0))
706+
return reflect.TypeFor[int64]()
707707
case pgtype.Int4OID:
708-
return reflect.TypeOf(int32(0))
708+
return reflect.TypeFor[int32]()
709709
case pgtype.Int2OID:
710-
return reflect.TypeOf(int16(0))
710+
return reflect.TypeFor[int16]()
711711
case pgtype.BoolOID:
712-
return reflect.TypeOf(false)
712+
return reflect.TypeFor[bool]()
713713
case pgtype.NumericOID:
714-
return reflect.TypeOf(float64(0))
714+
return reflect.TypeFor[float64]()
715715
case pgtype.DateOID, pgtype.TimestampOID, pgtype.TimestamptzOID:
716-
return reflect.TypeOf(time.Time{})
716+
return reflect.TypeFor[time.Time]()
717717
case pgtype.ByteaOID:
718-
return reflect.TypeOf([]byte(nil))
718+
return reflect.TypeFor[[]byte]()
719719
default:
720-
return reflect.TypeOf("")
720+
return reflect.TypeFor[string]()
721721
}
722722
}
723723

0 commit comments

Comments
 (0)