Часть 1: переменные и константы
Это практическое введение в Go для людей, которые уже знакомы с языками программирования Python. В этой статье мы напишем нашу первую программу на Go и узнаем о переменных и константах.
Привет, мир
Мы начнем с традиционной программы hello world.
Go, как и большинство скомпилированных языков программирования, имеет мало шаблонного кода, связанного с ним. Функция main
в пакете main
является точкой входа для приложения.
fmt
пакет обеспечивает поддержку stdin и stdout. Println
, как следует из названия, напечатает переменную и добавит новую строку. Также стоит отметить, что соглашения об именах пакетов состоят из маленьких букв, за которыми следует функция, начинающаяся с заглавной буквы. Это потому, что заглавная буква означает, что переменная и функции являются глобальными областями.
Третье, что мы можем заметить, это то, что Go использует фигурные скобки{}
для создания блока, в отличие от Python, который использует отступы.
Запуск скрипта
Чтобы запустить питон, мы обычно делаем:
$ python main.py
Для запуска кода go мы можем использовать:
$ go run main.go
или для создания скомпилированного файла мы можем запустить:
$ go build main.go
Он создаст исполняемый файл main.go
, который мы можем запустить как
$ ./main
Соглашения об именах для файла
И python, и go следуют одному и тому же соглашению об именах файлов.
- Все символы в имени файла должны быть строчными.
- И разделены символом подчеркивания
(_)
, если требуется. - Имя файла, начинающееся с
.
, не может быть импортировано.
Переменная
В Python нет объявления переменных. Переменная создается, когда мы передаем ей значение в первый раз. Начиная с python3.5 у нас есть type hints
, но они не применяются самим интерпретатором Python.
Go — статический язык, поэтому такие типы можно явно объявлять с помощью var
keywords. Синтаксис объявления переменной: var variable type = expression
.
Сокращенная запись
Как и Python, идите своим путем для объявления и инициализации переменных. Go может определить тип переменной во время инициализации. Приведенное выше объявление имени переменной можно переписать как var name = “World”
. Еще лучше использовать сокращенный синтаксис с оператором :=
.
Поскольку в Go инициализация и объявление переменных могут находиться в разных строках, в случае, если значение не будет передано, оно примет соответствующий zero value
.
Объявление нескольких переменных в одной строке
Многострочное объявление возможно как в Go, так и в Python. Переменные распаковываются обучающей запятой. Количество переменных должно соответствовать количеству аргументов.
Пустой идентификатор
И Python, и Go используют подчеркивание (_) в качестве одноразовой переменной, что означает, что значение игнорируется интерпретатором.
Компилятор Go применяет строгие проверки переменных, которые объявлены, но не используются. Итак, в вашем путешествии по Go вы обязательно столкнетесь с проблемой пару раз.
Константы
Мы используем ключевое слово const
для создания константы в Go. Мы можем создавать константы только для примитивных типов, таких как string
, символ, логическое значение, целое число и число с плавающей запятой.
В Python нет понятия констант. Мы сохраняем подсказку типа Final и делаем имя переменной заглавным в соответствии с pep8.
Соглашения об именах переменных
Есть несколько соглашений по умолчанию, общих для языков, таких как:
- Имя переменной не может начинаться с пробелов или цифр.
- В имени переменной не может быть пробелов.
- В python мы используем регистр змеи (
snake_case
) для переменных иSNAKE_CASE
для констант в качестве соглашения об именах. - В Go мы используем смешанные заглавные буквы как для переменных, так и для констант.
mixedCase
используется для локальной переменной/константыand MixedCase
используется, если переменная/константа экспортируется.