Как мне найти тип объекта в Go? В Python я просто использую, typeof
чтобы выбрать тип объекта. Аналогично в Go, есть ли способ реализовать то же самое?
Вот контейнер, из которого я итерирую:
for e := dlist.Front(); e != nil; e = e.Next() {
lines := e.Value
fmt.Printf(reflect.TypeOf(lines))
}
Я не могу получить тип строк объекта в этом случае, который является массивом строк.
go
go-reflect
Рахул
источник
источник
fmt.Printf("%T\n", var)
Ответы:
В пакете отражения Go есть методы для проверки типа переменных.
Следующий фрагмент выведет тип отражения строки, целого числа и числа с плавающей точкой.
Вывод:
см. http://play.golang.org/p/XQMcUVsOja, чтобы увидеть его в действии.
Дополнительная документация здесь: http://golang.org/pkg/reflect/#Type
источник
Я нашел 3 способа вернуть тип переменной во время выполнения:
Использование форматирования строки
Используя отражать пакет
Использование утверждений типа
Каждый метод имеет свой лучший вариант использования:
форматирование строки - короткая и низкая занимаемая площадь (нет необходимости импортировать отражающий пакет)
отражать пакет - когда нужно больше подробностей о типе, у нас есть доступ к полным возможностям отражения
утверждения типа - позволяет группировать типы, например, распознавать все типы int32, int64, uint32, uint64 как «int»
источник
t
, такt := v.(type)
становитсяv.(type)
и_ = t
больше не нужно.case 'T': p.fmt.fmtS(reflect.TypeOf(arg).String())
, Пакет fmt использует тип отражения для печатиИспользуйте пакет отражения :
Производит:
Игровая площадка
Пример использования
ValueOf(i interface{}).Kind()
:Производит:
Игровая площадка
источник
if reflect.TypeOf(err) == string
?Чтобы получить строковое представление:
С http://golang.org/pkg/fmt/
Выходы:
источник
Я бы держался подальше от отражения. пакет. Вместо этого используйте% T
источник
Лучший способ - использовать концепцию отражения в Google.
reflect.TypeOf
дает тип вместе с именем пакетаreflect.TypeOf().Kind()
дает подчеркивание типаисточник
Чтобы быть кратким, пожалуйста, используйте
fmt.Printf("%T", var1)
или другие варианты в пакете fmt.источник
Вы можете проверить тип любой переменной / экземпляра во время выполнения либо с помощью функции «отражать» пакетов,
TypeOf
либо с помощьюfmt.Printf()
:источник
Чтобы получить тип полей в структуре
Вывод
Смотрите в IDE https://play.golang.org/p/bwIpYnBQiE
источник
Вы можете использовать
reflect.TypeOf
.int
,string
): он возвращает его имя (например:int
,string
)<package name>.<struct name>
(например:main.test
)источник
Если у нас есть эти переменные:
источник
Вы можете использовать:
interface{}..(type)
как на этой детской площадкеисточник
Отражать пакет приходит на помощь:
Проверьте это демо
источник
Вы можете просто использовать метод fmt package fmt.Printf (), больше информации: https://golang.org/pkg/fmt/
пример: https://play.golang.org/p/aJG5MOxjBJD
источник