Что такое строгая типизация? Чем она отличается от статической?

Ответ

Строгая типизация (Strong Typing) означает, что язык программирования накладывает строгие ограничения на смешивание переменных разных типов. Неявные преобразования типов (implicit conversions) либо запрещены, либо сведены к минимуму.

Разница между статической и строгой типизацией:

  • Статическая типизация отвечает на вопрос КОГДА происходит проверка типов (на этапе компиляции).
  • Строгая типизация отвечает на вопрос КАК происходит проверка (насколько строги правила смешивания типов).

Go является языком как со статической, так и со строгой типизацией.

Пример строгой типизации в Go:

Нельзя просто сложить int и float64 без явного приведения типа.

var a int = 5
var b float64 = 2.5

// var c = a + b // Ошибка компиляции: invalid operation: a + b (mismatched types int and float64)

// Для выполнения операции требуется ЯВНОЕ приведение типа:
var c = float64(a) + b
fmt.Println(c) // Вывод: 7.5

В языках со слабой типизацией (например, JavaScript) операция 5 + '5' может дать непредсказуемый результат ('55' или 10), так как язык пытается неявно преобразовать типы. В Go такая операция вызовет ошибку компиляции, что делает код более предсказуемым и надежным.