Вы не можете. Вы можете передавать только значение, и CustomStruct
- это не значение, а тип. Использование идентификатора типа является ошибкой во время компиляции.
Обычно, когда нужно передать тип, вы передаете значение reflect.Type
, которое описывает тип. Это то, что вы «создаете» внутри getTypeName()
, но тогда у getTypeName()
мало что остается сделать:
func getTypeName(t reflect.Type) string {
return t.Name()
}
// Calling it:
getTypeName(reflect.TypeOf(CustomStruct{}))
(Также не забывайте, что это возвращает пустую строку для анонимных типов, таких как []int
.)
Другой способ - передать «типизированное» значение указателя nil
, как вы это делали, но опять же, вы также можете использовать типизированное значение nil
для создания reflect.Type
, не создавая значения введите вопрос, например, так:
t := reflect.TypeOf((*CustomStruct)(nil)).Elem()
fmt.Println(t.Name()) // Prints CustomStruct