| // Copyright 2023 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package reflect_test |
| |
| import ( |
| "reflect" |
| "testing" |
| ) |
| |
| func TestTypeFor(t *testing.T) { |
| type ( |
| mystring string |
| myiface interface{} |
| ) |
| |
| testcases := []struct { |
| wantFrom any |
| got reflect.Type |
| }{ |
| {new(int), reflect.TypeFor[int]()}, |
| {new(int64), reflect.TypeFor[int64]()}, |
| {new(string), reflect.TypeFor[string]()}, |
| {new(mystring), reflect.TypeFor[mystring]()}, |
| {new(any), reflect.TypeFor[any]()}, |
| {new(myiface), reflect.TypeFor[myiface]()}, |
| } |
| for _, tc := range testcases { |
| want := reflect.ValueOf(tc.wantFrom).Elem().Type() |
| if want != tc.got { |
| t.Errorf("unexpected reflect.Type: got %v; want %v", tc.got, want) |
| } |
| } |
| } |