Ответ
В Go используется статическая и строгая система типов.
1. Статическая типизация (Static Typing)
Тип каждой переменной известен на этапе компиляции. Это позволяет компилятору находить ошибки несоответствия типов ещё до запуска программы, что повышает надёжность кода.
var name string = "Go"
// name = 123 // Ошибка компиляции: cannot use 123 (type untyped int) as type string
Несмотря на статическую типизацию, Go поддерживает вывод типов (type inference) с помощью оператора :=
, что делает код менее многословным:
// Компилятор сам определяет, что age - это int
age := 30
2. Строгая типизация (Strong Typing)
Go не допускает неявных преобразований между переменными разных типов. Любое преобразование должно быть выполнено явно.
var a int = 10
var b float64 = 5.5
// var sum = a + b // Ошибка компиляции: invalid operation: a + b (mismatched types int and float64)
// Правильно — с явным приведением типа:
var sum = float64(a) + b
В отличие от:
- Динамической типизации (Python, JavaScript), где тип переменной определяется в рантайме.
- Слабой (нестрогой) типизации (JavaScript), где разрешены неявные преобразования (например,
"5" + 1
может дать'51'
).