В этой статье я хотел бы описать синтаксис языка Go.Синтаксис языка Go очень похож на C, но с отдельными элементами из Оберона и скриптовых языков.В этой статье я постараюсь подробное объяснение, как создаются переменные, функции и так далее
Я думаю, приступим сразу.
Точка с запятой в Go ставится в основном только в конструкциях for, for range, так как компилятор Go ставит точки с запятой автоматически в конце каждой строке.Из-за этого, при построении конструкций и функций нельзя переносить фигурную строчку на новую строку.
В Go строгая статическая типизация, а при объявлении в функции — утиная.При создании функции вне функции применяется директива var, которая можно группировать в одну, а в функции — её сокращение :=
Примечание: Go отлично поддерживает Unicode и может создавать название переменных с использованием русского языка.
Пакеты в Go подключаются почти так-же как и переменные, но с использованием директивы import
В Go странная видимость переменных.Все переменные являются глобальными, но при использовании переменных и функций из одного пакета в другом, глобальными являются только те, что начинаются с большой буквы
Первый пакет:
Второй пакет:
Функции создаются при помощи директивы func.Структура объявления:
Конструкция if в Go очень похожа на её аналог в языке C, кроме того, что в ней нет круглых скобок
У конструкции есть две версии:
1.Аналог из языка C
2.Уникальную, хотя возможно она есть в других языках
Отличие 2 конструкции от 1 в том, что она не принимает выражение, которое нужно проверять.Лучше просто посмотрите на код.
Конструкция for в Go аналог конструкции в C, кроме того, что в ней не используются круглые скобки
Это всего лишь основы.В языке Go много хорошего и его функционал не ограничен тем, что написал я.
Я думаю, приступим сразу.
Точка с запятой
Точка с запятой в Go ставится в основном только в конструкциях for, for range, так как компилятор Go ставит точки с запятой автоматически в конце каждой строке.Из-за этого, при построении конструкций и функций нельзя переносить фигурную строчку на новую строку.
if i == 2 {
//Верно
}
if i == 2
{
//Неверно
}
Переменные
В Go строгая статическая типизация, а при объявлении в функции — утиная.При создании функции вне функции применяется директива var, которая можно группировать в одну, а в функции — её сокращение :=
//структура объявления:
//var Название Тип
var i int
//их можно группировать
var (
i int
s string
b bool
)
func main() {
i := 123//язык сам определит, какой тип у переменной
}
Примечание: Go отлично поддерживает Unicode и может создавать название переменных с использованием русского языка.
Пакеты
Пакеты в Go подключаются почти так-же как и переменные, но с использованием директивы import
//структура:
//import "Название"
import "fmt"
//их тоже можно группировать
import (
"fmt"
"os"
)
Использование пакетов
В Go странная видимость переменных.Все переменные являются глобальными, но при использовании переменных и функций из одного пакета в другом, глобальными являются только те, что начинаются с большой буквы
Первый пакет:
package main import "pack" func main() { pack.ShowHash() //Данная функция глобальная pack.hash //Переменная доступна только в самом пакете }
Второй пакет:
package pack var hash = "securityhash" //Доступка везде func ShowHash() { print(hash)//Доступ дан }
Функции
Функции создаются при помощи директивы func.Структура объявления:
//func Название(принимаемый переменные) (возвращаемые переменные)
func Name(ione, itwo int, s string) (r int, b bool) {
}
//Как вы заметили, если переменные одного типа, то можно их группировать, как ione и itwo
//Когда функция возвращает один параметр или параметры, которые могут иметь несколько возможных типов можно опустить возвращаемые типы.
func Name(ione, itow int, s string) {
return ione + itow
}
//Или написать лишь одну
func Name(ione, itwo int, s string) r int {
}
Конструкция if
Конструкция if в Go очень похожа на её аналог в языке C, кроме того, что в ней нет круглых скобок
if i <= 1, i >= 0 {
fmt.PrintIn(i)
}
Конструкция switch
У конструкции есть две версии:
1.Аналог из языка C
2.Уникальную, хотя возможно она есть в других языках
Отличие 2 конструкции от 1 в том, что она не принимает выражение, которое нужно проверять.Лучше просто посмотрите на код.
//Структура для 1 конструкции
//switch выражение {
//case значение:
// действие
//case значение1:
// действие2
//default:
// стандартное действие
//}
switch x {
case z:
return "z"
case y:
return "y"
default:
return "x"
}
//Структура для 2 конструкции
//switch {
//case выражение:
// действие1
//}
switch {
case x == y:
return x
case z == y:
return z
}
Конструкция for
Конструкция for в Go аналог конструкции в C, кроме того, что в ней не используются круглые скобки
for i := 0; i <= 10; i++ {
print(i)
}
Это всего лишь основы.В языке Go много хорошего и его функционал не ограничен тем, что написал я.