Работа мечты в один клик 💼

💭Мечтаешь работать в Сбере, но не хочешь проходить десять кругов HR-собеседований? Теперь это проще, чем когда-либо!
💡AI-интервью за 15 минут – и ты уже на шаг ближе к своей новой работе.
Как получить оффер? 📌 Зарегистрируйся 📌 Пройди AI-интервью 📌 Получи обратную связь сразу же!
HR больше не тянут время – рекрутеры свяжутся с тобой в течение двух дней! 🚀
Реклама. ПАО СБЕРБАНК, ИНН 7707083893. Erid 2VtzquscAwp
Установка Go
Заходим на официальный сайт Go.

Нажимаем на Download Go.

Выбираем версию для своей операционной системы и скачиваем.
Пользователям Windows нужно запустить установщик. Если вы используете Linux, придется распаковать скачанный архив в /usr/local/go
и экспортировать путь /usr/local/go/bin
в переменную среды $PATH
. Получиться должна примерно следующая структура папок:

Чтоб убедиться в успешной установке введите команду go version
в консоли или терминале:

Установка редактора кода
Go поддерживается в различных редакторах кода (IDE), к примеру:
- Goland
- Visual Studio Code
- vim
Полный список IDE доступен по сылке: https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
Создание проекта
Создадим директорию helloworld
. Перейдем в нее и выполним команду:
go mod init helloworld
Должен появиться файл с названием go.mod
.
go.mod
в корне. Этот файл определяет путь модуля и набор импортируемых модулей.Далее создадим файл main.go
и запишем в него следующий код:
package main
func main() {
println("Hello World")
}
Компиляция и запуск программы
Чтобы запустить код, откройте консоль или терминал. Далее перейдите в каталог, где расположен файл main.go
и выполните команду:
go run main.go
Результат работы программы будет следующим:

Вы написали первую программу на Go, поздравляем!
Давайте разберем, что здесь происходит:
- Функция
main
– входная точка программы. С нее основная программа начинается и в ней же завершается. println
– функция, выводящая текст на экран консоли. Для вызова используется следующий синтаксис:название функции + открывающая круглая скобка + аргументы функции + закрывающая круглая скобка + операторные скобки {}
.- По достижении последней фигурной скобки функции
main
программа завершается.
Код, листинги которого будут приведены ниже, должны располагаться внутри фигурных (операторных) скобок функции main
. В примерах функция main
будет опущена для краткости.
Переменные
Переменные в Go характеризуются названием и типом, они должны объявляться до первого использования.
Объявление переменной в Go:
var number int
Мы объявили переменную number с типом int
. int
– тип переменной, которая хранит целое число.
Базовые типы данных:
- bool
- string
- int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
- byte // псевдоним для uint8
- rune // псевдоним для int32
- float32 float64
- complex64 complex128
При объявлении переменной устанавливается ее начальное значение. Для int
это 0, для float
– 0.0, для string
– "" (пустая строка), для bool
– false
.
Если начальное значение переменной известно во время объявления, можно воспользоваться краткой записью:
number := 0
// эквивалентно
var number = 0
Чтобы записать значение в переменную после ее объявления, воспользуйтесь оператором =
:
var number, secondNumber int
number = 15
secondNumber = number
println(number) // Вывод: 15
println(secondNumber) // Вывод: 15
Над переменными можно производить операции с помощью операторов. Например, числа можно сравнить, а строки конкатенировать.
Список операторов Go:

Управляющие конструкции
Для управления тем, какие строки кода исполнятся и в каком порядке, существуют специальные конструкции. Давайте перечислим основные:
- Следование
- Условие
- Циклы
Следование
Весь код исполняется последовательно, строка за строкой.
Условие
Для исполнения участка кода в зависимости от условия используется условная конструкция if
:
number := 15
secondNumber := 10
if number < secondNumber {
println("первое число меньше второго")
}
Сообщение не будет выведено на экран, так как условие ложно. На месте условия может использоваться все, результатом чего будет значение типа bool
.
Чтобы определить код, который выполнится при невыполнении ни одного условия можно добавить else
:
if number < secondNumber {
println("первое число меньше второго")
} else if number > secondNumber {
println("второе число меньше первого")
} else {
println("числа равны")
}
Дополнительно к конструкции управления if
имеется конструкция switch
, работающая подобным образом:
switch 200 {
case 100:
println("число равно 100")
case 200:
println("число равно 200") // будет выведено это
}
switch
получает значение 200 и ищет case
, в котором значения совпадают и выполняет только определенный участок кода.
switch
также может использоваться как замена if
. Перепишем пример с
if
:
switch {
case number < secondNumber:
println("первое число меньше второго")
case number > secondNumber:
println("второе число меньше первого")
default:
println("числа равны")
}
Роль else
здесь играет слово default
. Оно также будет выполнено при невыполнении ни одного из условий.
Циклы
Обратите внимание: для повторения участков кода в Go используется только цикл for
, который может принимать разные формы:
for i := 1; i <= 10; i++ {
println(i)
}
Этот цикл распечатает значения от 1 до 10.
Если нужен цикл без счетчика, нужно опустить первую и третью части цикла for
вместе с точкой запятой:
for number < secondNumber {
number = number + 1
}
На каждом повторении цикла будет проверяться заданное условие. Пока условие истинно, цикл будет продолжаться. Как только условие станет ложным, он прервется.
Для бесконечного цикла можно опустить условие:
for {
println("Бесконечный цикл")
}
Чтобы остановить цикл, используется ключевое слово break
:
i := 0
for {
println("Бесконечный цикл")
if i == 10 {
break
}
i++
}
При достижении конструкции break
цикл будет завершен.
Внутри цикла также можно использовать специально слово continue
. Оно отличается от break
тем, что не сразу завершает цикл, а лишь пропускает оставшийся код цикла и начинает новое повторение.
Массивы
Объявление массива:
var numbers [3]int
Обращение к элементам массива производится по имени массива и индексу элемента. Элементы массива индексируются с нуля.
Заполнение массива значениями:
numbers[0] = 10
numbers[1] = 11
numbers[2] = 12
Если начальное значение массива известно при объявлении, можно воспользоваться литералом объявления массива:
var numbers [3]int = [3]int{10, 11, 12}
Для избежания лишнего кода воспользуемся кратким объявлением:
numbers := [3]int{10, 11, 12}
Размер массива статичен и не может меняться во время выполнения программы. Для этих целей используются слайсы.
Слайсы
Слайс является более удобной альтернативой массиву. Объявление слайса отличается от объявления массива только отсутствием размера:
numbers := [3]int{10, 11, 12} // массив
numbers := []int{10, 11, 12} // слайс
Слайс может менять размер во время выполнения программы. Для добавления новых элементов в слайс используется встроенная функция append
:
numbers = append(numbers, 13) // добавление одного элемента
numbers = append(numbers, 14, 15) // добавление двух элементов
Функции
Для переиспользования часто используемого кода нужны функции.
println
для вывода значений на экран.Функция должна быть объявлена вне функции main
:
func НазваниеФункции(первыйАргумент int, второйАргумент int) (возвращаемоеЗначение int) {
// тело функции
return 0
}
После ключевого слова func
указывается название функции. Далее в круглых скобках аргументы, которые принимает функция. После закрывающей круглой скобки указывается одно или несколько возвращаемых значений функции, а затем следует код функции в операторных скобках.
Функция Sum
складывает два числа и возвращает результат:
func Sum(a, b int) int {
return a + b
}
Функция SumAndDivide
возвращает как сумму, так и частное чисел:
func SumAndDivide(a, b int) (int, int) {
return a + b, a / b
}
Обе функции доступны в функции main:
func main() {
sum := Sum(1, 2)
println(sum) // 3
sum, division := SumAndDivide(4, 2)
println(sum) // 6
println(division) // 2
}
Пакеты
Писать код большой программы в одном файле неудобно. Тем более переиспользовать этот код нельзя. Поэтому код разбивается на пакеты – наборы файлов с расширением .go
и кодом, который можно импортировать и переиспользовать. Стандартная библиотека языка Go содержит много часто используемых и важных пакетов. Например, в пакете strings
содержатся функции для работы со строками.
Импорт и использование пакета strings
:
package main
import "strings"
func main() {
upper := strings.ToUpper("заглавные буквы")
println(upper) // Output: ЗАГЛАВНЫЕ БУКВЫ
}
Ключевое слово import
нужно для импорта используемых пакетов. Чтобы использовать функции из пакета strings
, нужно:
- написать название пакета;
- поставить точку;
- вызвать нужную функцию из пакета.
Первое серверное приложение “Hello Web”
В пакете http
содержится все необходимое для создания веб-сервера.
package main
import (
"log"
"net/http"
)
func HelloWeb(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello Web!"))
}
func main() {
http.HandleFunc("/", HelloWeb)
err := http.ListenAndServe("localhost:9999", nil)
if err != nil {
log.Println("listen and serve:", err)
}
}
Запустите код. Далее откройте браузер и перейдите по адресу http://localhost:9999/. Вы получите сообщение “Hello Web!”
Функция http.HandleFunc
устанавливает функцию HelloWeb
, по пути /
, а http.ListenAndServe
запускает сервер по указанному адресу.
Если вы перейдете по указанному адресу, вызовется функция HelloWeb
. Функция принимает два аргумента – сам запрос и переменную, позволяющую ответить на запрос. В строке w.Write([]byte(“Hello Web”))
мы отвечаем на запрос обычной строкой.
Поздравляем, вы написали ваш первый веб-сервер на Go!
Литература
- «Изучаем Go» – Head First, Джек Макгаврен.
- «Язык программирования Go» – Алан А. А. Донован, Брайан У. Керниган.
- «Go на практике» – Батчер Мэтт, Фарина Мэтт.
Онлайн ресурсы
- https://golang.org/ – официальный сайт.
- https://tour.golang.org/welcome/1 – тур по языку Go.
- https://go.dev/ – оффициальный портал об экосистеме языка.
Go в “Библиотеке Программиста”
- телеграм-канал Библиотека Go-разработчика
- подписывайтесь на тег Go, чтобы получать уведомления о новых постах на сайте
Мы пробежались по основам Go: переменные, операторы, управляющие конструкции, функции.
Ценностями языка являются:
- Простота
- Эффективность
- Надежность
- Продуктивность
- Дружелюбность
Go современный, широко используемый и востребуемый язык программирования, который стоит начать изучать прямо сейчас.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
- изучите сленг, на котором говорят все разработчики независимо от языка программирования: язык алгоритмов и структур данных;
- научитесь применять алгоритмы и структуры данных при разработке программ;
- подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.
Комментарии