#go
#Вперед
Вопрос:
Я использую пакет reflect для проверки типа моих переменных. Например, если я хочу проверить, является ли var целым числом, я делаю:
reflect.TypeOf(var).Kind == reflect.Int
Как я могу проверить, является ли моя переменная срезом int или float?
Я вижу Slice только как один из типов, возвращаемых Kind(), но этот фрагмент может быть любого типа
Ответ №1:
Если тип является срезом, Elem()
будет возвращен базовый тип:
func main() {
foo := []int{1,2,3}
fmt.Println(reflect.TypeOf(foo).Elem()) //prints "int"
fmt.Println(reflect.TypeOf(foo).Elem().Kind() == reflect.Int) //true!
}
Конечно, вам лучше проверить, что это фрагмент, прежде чем.