Этот вопрос проверяет знание механизма проверки типа переменной в Go. Понимание Type Assertion и Type Switch позволяет правильно работать с интерфейсами и динамическими типами.
Для проверки типа переменной в Go используется конструкция Type Switch или Type Assertion. Type Switch позволяет проверить тип переменной в условии switch, а Type Assertion — извлечь конкретный тип из интерфейса.
Go имеет механизм работы с интерфейсами, который позволяет переменным принимать значения разных типов. Для проверки типа переменной в Go существует два подхода: Type Switch и Type Assertion.
Type Assertion используется, чтобы извлечь конкретный тип из интерфейса:
package main
import "fmt"
func printType(i interface{}) {
if v, ok := i.(int); ok {
fmt.Println("Integer:", v)
} else {
fmt.Println("Not an integer")
}
}
func main() {
printType(42) // Integer: 42
printType("Hello") // Not an integer
}Type Switch позволяет проверять переменные на несколько типов сразу:
package main
import "fmt"
func checkType(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("Integer: %v\n", v)
case string:
fmt.Printf("String: %v\n", v)
default:
fmt.Printf("Unknown type: %T\n", v)
}
}
func main() {
checkType(42) // Integer: 42
checkType("Hello") // String: Hello
checkType(3.14) // Unknown type: float64
}Type Switch часто используется для динамической работы с переменными различных типов, например, в обработке интерфейсов.