В предыдущем посте, часть 1 – структура программы, мы рассмотрели структуру программы на Go, теперь давайте рассмотрим её базовый синтаксис — «строительные блоки», из которых она состоит.
Содержание
Токены в Go
Программа на Go состоит из множества т.н. «токенов». Токеном может быть ключевое слово, идентификатор, константа, строковый литерал или даже отдельный символ.
Например, следующий код:
fmt.Println("Hello, World!")
состоит из шести токенов:
fmt . Println ( "Hello, World!" )
Разделители строк и «;»
В Go разделитель строки является так же терминатором оператора, т.е. в Go вам не требуется указывать «;» после каждого оператора, как в С, так как Go сам подставит «;» для обозначения завершения логическоого оператора (см. Automatic semicolon insertion in Go), хотя вы можете и явно указать точку с запятой в коде.
Т.е. код:
fmt.Println("Hello, World!") fmt.Println("I am in Go Programming World!")
будет равнозначен:
fmt.Println("Hello, World!"); fmt.Println("I am in Go Programming World!");
и не вызовет ошибок при запуске.
Например, программа:
package main import "fmt" func main() { fmt.Println("Here is semicolon added in code"); fmt.Println("And here is no semicolon") }
И результат её выполнения:
[simterm]
$ go run semicolon.go Here is semicolon added in code And here is no semicolon
[/simterm]
Комментарии
Go поддерживает как однострочные, так и многострочные комментарии:
package main import "fmt" func main() { // This one-line comment fmt.Println("Hello") /* and this is multiline comment */ fmt.Println("World") }
Результат:
[simterm]
$ go run comments.go Hello World
[/simterm]
Идентификаторы
Идентификатор в Go — это имя, которое используется для обозначения переменной, функции или любого другого объекта, который создан пользователем.
Идентификато начинается с буквы A-Z, a-z или символа подчёркивания _, за которым следуют ноль или более букв, символов подчёркивания или цифр.
В идентификаторах не допускается использование специальных симовлов, таких так @, $ и %. Кроме того — Go является регистрозависимым языком, т.е. Manpower и manpower являются двумя различными идентификаторами.
Примеры допустимых идентификаторов:
mahesh kumar abc move_name a_123 myname50 _temp j a23b9 retVal
Ключевые слова
Ключевые слова, или keywords, зарезервированы Go и не могут быть использованы в роли констант, имён переменных или любых других идентификаторов.
Список таких ключевых слов:
break | default | func | interface | select |
case | defer | Go | map | Struct |
chan | else | Goto | package | Switch |
const | fallthrough | if | range | Type |
continue | for | import | return | Var |
Разделители
Разделителями в Go могут быть пробелы, табуляции, символы новой строки и комментарии.
Строка, содержащая только разделитель, возможно с комментарием, считается пустой строкой и компилятор Go полностью проигнорирует её.
Разделители разбивают части оператора друг от друга и позволяют компилятору отпределять где один элемент в операторе заканчивается, а другой начинается.
Например, в операторе:
var age int;
Должен быть как минимум один разделитель между int
и age
, что бы компилятор определил их.
Но в выражении:
fruit = apples + oranges; // get the total fruit
разделителей между fruit
и =
или между =
и apples
не требуется, хотя вы вольны включать их в код для улучшения его читабельности.
Продолжение — часть 3 – типы данных.