Типизированные и нетипизированные константы Go - это две важные концепции, которые вам необходимо понять.
👉 Не забывайте, что в приведенных ниже примерах кода содержится много дополнительной информации, поэтому обязательно нажмите и попробуйте их.
Почему вы можете использовать константы?
Вы не хотите вводить магические значения везде в своем коде, поэтому объявите их с константами и повторно используйте их снова.
Магические значения небезопасны, вы можете ввести их неправильно, поэтому более безопасная альтернатива - константа. Кроме того, приятнее видеть константу, а не магическое значение; Людям будет легче понять, что происходит в вашем коде.
Мы надеемся, что мы получим некоторые преимущества в скорости использования констант, потому что компилятор сможет выполнять больше оптимизаций, потому что он знает, что значение константы никогда не изменится.
Мне больше всего нравятся нетипизированные константы. Это действительно гениальная идея. Используя нетипизированные константы, вы получите гибкость и высокую точность вычислений.
Типизированные константы
Тип → логическое, руническое, числовое или строковое.
Значение → Присваивается при объявлении во время компиляции.
Адрес → Вы не можете получить к нему доступ из его адреса в памяти (в отличие от переменных).
→ Вы не можете изменить его значение после того, как объявите его.
→ Нельзя использовать такие конструкции времени выполнения, как переменные, указатели, массивы, срезы, карты, структуры, интерфейсы, вызовы функций или значения функций.
Типизированное объявление константы
Объявляет типизированную константу с именем Pi с типом float64 и значением 3,14.
Запустите и попробуйте пример кода здесь.
Множественные объявления констант
Объявляет несколько констант, которые имеют разные типы и значения в одном операторе.
- Если тип и значение константы не объявлены, они будут получены из предыдущей константы. Здесь Pi2 получает свой тип и значение от Pi.
- Константа Age объявляется с новым значением. И он получает свой тип через присвоенное значение 10 (он имеет тип по умолчанию int).
- Несколько констант могут быть определены в одной строке, а также в объявлении нескольких переменных.
Нетипизированные константы
У них есть отличные свойства, такие как высокоточные вычисления и возможность использовать их во всех числовых выражениях без объявления типа и т. д. Я расскажу вам об этом ниже. Они похожи на подстановочные знаки Go.
Идеальный тип → скрытый тип, отличный от обычных типов Go.
Идеальное значение → живет в пространстве идеальных значений и имеет тип по умолчанию.
Тип по умолчанию → Зависит от идеального значения.
Нетипизированное объявление константы
Объявляет нетипизированную константу с именем Pi с идеальным числовым значением 3,14 и типом по умолчанию float.
Попробуйте пример кода здесь.
👉 Тип по умолчанию будет преобразован в обычный при необходимости.
Расчеты с высокой точностью
Если вы остаетесь в области нетипизированных констант, ограничений по скорости нет! Но когда вы используете их в переменной, применяется ограничение скорости.
👉 Когда вы назначаете его переменной, точность нетипизированной константы снижается, и ее тип по умолчанию преобразуется в обычные типы Go.
Запустите пример кода здесь.
Гибкие выражения
Вы можете использовать нетипизированные константы для временного выхода из строгой системы типов Go до их вычисления в выражении, требующем типа.
Я постоянно использую их в своем коде, чтобы избавиться от ненужного объявления вещей, когда мне не нужен строгий тип. Поэтому не объявляйте тип с константой, если она вам действительно не нужна.
Запустите примеры кода:
- Понять, когда и как использовать нетипизированные константы
- Мы можем присвоить нетипизированную константу любой переменной числового типа
Прицелы и затенение
👉 Константу можно использовать только в объявленной области. Если вы повторно объявите константу во внутренней области видимости с тем же именем снова, это будет новая константа, которая будет видна только этой внутренней области видимости и будет затенять константу внешней области видимости. См. Пример кода здесь.
Хорошо, на этом пока все. Спасибо, что дочитали до сих пор.
Давайте оставаться на связи:
- 📩 Присоединяйтесь к моей рассылке новостей
- 🐦 Следуй за мной в твиттере
- 📦 Получите репозиторий Go для бесплатных руководств, примеров и упражнений
- 📺 Учитесь Go с моим курсом Go Bootcamp
- ❤️ Хотите помочь? Пожалуйста, аплодируйте и поделитесь статьей. Пусть другие люди тоже узнают из этой статьи.