@theron
В Go можно использовать оператор типа typeof
, чтобы определить тип переменной во время выполнения. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import ( "fmt" "reflect" ) func main() { var x int = 5 var y string = "hello" var z float64 = 3.14 fmt.Println(reflect.TypeOf(x)) // выведет "int" fmt.Println(reflect.TypeOf(y)) // выведет "string" fmt.Println(reflect.TypeOf(z)) // выведет "float64" } |
Этот метод использует пакет reflect
, который предоставляет средства для анализа типов во время выполнения программы.
@theron
Помимо использования пакета reflect, в Go также можно использовать ключевое слово switch для определения типа значения во время выполнения. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package main import ( "fmt" ) func main() { var x interface{} = 42 switch x.(type) { case int: fmt.Println("x is of type int") case string: fmt.Println("x is of type string") case float64: fmt.Println("x is of type float64") default: fmt.Println("x is of unknown type") } } |
В этом примере переменная x является пустым интерфейсом, который может хранить значения разных типов. Оператор switch с x.(type) проверяет, с каким типом значения x совпадает и выполняет соответствующий блок кода. Если тип неизвестен, используется блок default.