Pull to refresh

Обзор синтаксиса языка 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 много хорошего и его функционал не ограничен тем, что написал я.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.