Go: часть 2 — базовый синтаксис

В предыдущем посте, часть 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 – типы данных.