Как стать автором
Поиск
Написать публикацию
Обновить

Обзор синтаксиса языка Go. Основы

В этой статье я хотел бы описать синтаксис языка Go.Синтаксис языка Go очень похож на C, но с отдельными элементами из Оберона и скриптовых языков.В этой статье я постараюсь подробное объяснение, как создаются переменные, функции и так далее

Я думаю, приступим сразу.

Точка с запятой

Точка с запятой в 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 много хорошего и его функционал не ограничен тем, что написал я.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.