07 декабря 2023

🦫 Самоучитель по Go для начинающих. Часть 3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста

Энтузиаст-разработчик, автор статей по программированию.
В этом уроке мы создадим и запустим простую программу на Go и на её примере познакомимся с организацией кода и основными функциями.
🦫 Самоучитель по Go для начинающих. Часть 3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста

Хочешь уверенно проходить IT-интервью?

Готовься к IT-собеседованиям уверенно с AI-тренажёром T1!

Мы понимаем, как сложно подготовиться: стресс, алгоритмы, вопросы, от которых голова идёт кругом. Но с AI тренажёром всё гораздо проще.

💡 Почему Т1 тренажёр — это мастхэв?

  • Получишь настоящую обратную связь: где затык, что подтянуть и как стать лучше
  • Научишься не только решать задачи, но и объяснять своё решение так, чтобы интервьюер сказал: "Вау!".
  • Освоишь все этапы собеседования, от вопросов по алгоритмам до диалога о твоих целях.

Зачем листать миллион туториалов? Просто зайди в Т1 тренажёр, потренируйся и уверенно удиви интервьюеров. Мы не обещаем лёгкой прогулки, но обещаем, что будешь готов!

Реклама. ООО «Смарт Гико», ИНН 7743264341. Erid 2VtzqwP8vqy


Первая программа

Давайте напишем программу на Go, которая будет считывать имя пользователя и выводить сообщение с приветствием в консоль.

Первым делом создадим папку main/ и разместим там файл main.go , который будет содержать следующий код:

main.go
        package main // определили пакет main

import "fmt" // импортировали пакет fmt

// функция для входа в программу
func main() {
	var name string // объявили переменную name типа string
	fmt.Scan(&name) // считали переменную name с потока ввода

	// функция Print() печатает сообщение в консоль
	fmt.Print("Hello, ", name)
}

    

Разбор программы

Организация кода

Наша программа начинается со строки package main, которая определяет используемый пакет. В Go каждый программный файл должен быть частью какого-либо пакета.

При разработке на Go нужно обязательно создавать файл с объявлением главного пакета package main и функции main(), потому что именно она задает точку входа в программу.

Стоит помнить, что имя пакета должно соответствовать названию директории, в которой расположены его файлы. К примеру, если в папке application/ содержится файл server.go, то название пакета в нем должно быть package application.

В следующей строке происходит импорт пакета "fmt", который содержится в стандартной библиотеке языка и предназначен для форматирования ввода-вывода:

main.go
        import "fmt" // импортировали пакет "fmt" для ввода-вывода

    

Для импорта несколько пакетов используют круглые скобки:

        import (
	"fmt"
	"strings"
)

    

Стандартная библиотека языка содержит большое количество пакетов для часто используемых задач. К примеру, "fmt" используется для форматирования ввода-вывода, "strings" – для работы со строками. Для скачивания сторонних пакетов существует специальная команда go get <название пакета>

Например, так можно скачать пакет lib/pq, содержащий драйвер для работы с СУБД PostgreSQL в Go:

        go get github.com/lib/pq

    
👨‍💻 Библиотека Go разработчика
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека Go разработчика»
🎓 Библиотека Go для собеса
Подтянуть свои знания по Go вы можете на нашем телеграм-канале «Библиотека Go для собеса»
🧩 Библиотека задач по Go
Интересные задачи по Go для практики можно найти на нашем телеграм-канале «Библиотека задач по Go»

Функции

Переходим к разбору строк, содержащих логику работы программы:

main.go
        // функция для входа в программу
func main() {
	var name string // объявили переменную name типа string
	fmt.Scan(&name) // считали переменную name с потока ввода

	// функция Print() печатает сообщение в консоль
	fmt.Print("Hello, ", name)
}

    

Здесь происходит объявление функции main() с помощью ключевого слова func и вызов функций fmt.Scan() и fmt.Print() из ранее импортированного пакета"fmt". Первая из них отвечает за ввод данных с клавиатуры, а вторая – за вывод сообщения с переданными данными в консоль.

Что такое функции в Go?

Функции – это подпрограммы, позволяющие структурировать, упрощать и адаптировать написанный код. Они принимают входные параметры (аргументы) и после их обработки выдают требуемый результат.

Подробнее мы разберем функции в отдельном разделе, на текущем этапе главное — понять, что они отвечают за выполнение определенных задач, в нашем случае за запуск программы, считывание данных с клавиатуры и их вывод в консоль.

Система модулей

Модули в контексте языка Go — это коллекции пакетов и файлов конфигурации, которые обеспечивают управление зависимостями и версионирование проекта, а также решают проблемы, характерные для старой системы GOPATH. Они позволяют разработчикам создавать структурированные проекты и управлять версиями используемых библиотек.

Давайте инициализируем модуль в ранее созданной директории main/. Для этого нам понадобится команда go mod init:

        go mod init github.com/<ваш_ник_в_github>/main

    

Теперь в папке main/ должен появиться файл go.mod, в котором указаны все использованные модули и импортированные пакеты. Его содержимое будет выглядеть примерно так:

go.mod
        module github.com/<ваш_ник_в_github>/main

go 1.21.4 // здесь указана используемая в проекте версия go

    

В первой строке файла go.mod содержится название модуля, которое обычно дается по адресу расположения репозитория. Далее указывается минимальная совместимая версия Go, после чего следует список зависимостей. В нашем случае он пуст. Для его обновления нужно импортировать пакет с помощью команды go get , как это было показано ранее с lib/pq .

На практике часто используется команда go mod tidy, которая помимо импорта загружает отсутствующие зависимости и удаляет лишние.

Компиляция и выполнение программы

Язык Go является компилируемым, то есть написанный на нём исходный код преобразуется в машинный и затем записывается в файл, исполняемый компьютером.

Компиляция – это процесс преобразования программы, написанной на языке программирования высокого уровня, в исполняемый машинный код, который может быть выполнен компьютером.

Компиляция позволяет предупредить возможные ошибки и оптимизирует исходный код, что хорошо сказывается на производительности программы.

В Go есть два способа запуска программ:

  1. С помощью команды go run <имя_файла>.go . Она автоматически компилирует исполняемый файл, запускает его и сразу же удаляет. Этот способ используется в тех случаях, когда нужно разово запустить небольшой кусок кода и быстро получить результат.
  2. С помощью команды go build <имя_файла>.go . Она также занимается компиляцией и создает в директории исполняемый файл, способный запускаться на разных ОС. Особенностью этой команды является то, что она обеспечивает кроссплатформенность, так как позволяет контролировать, для какой ОС и архитектуры создается бинарный файл.

Скомпилируем нашу первую программу и посмотрим на полученный вывод. Для этого в консоли введем команду go build main.go, предварительно перейдя в ранее созданную директорию main/.

В результате в папке main/ должен появиться исполняемый файл main.exe (Windows) или main (Linux / MacOS). Чтобы его запустить, напишем в консоли main (Windows) или ./main (Linux / MacOS). В появившееся поле введем любую строку, пусть это будет user , после чего получим сообщение Hello, user, что свидетельствует об успешном выполнении кода.

Подведём итог

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

В следующем уроке узнаем о составных частях любой программы – переменных, основных операциях и типах данных.

***

Содержание самоучителя

  1. Особенности и сфера применения Go, установка, настройка
  2. Ресурсы для изучения Go с нуля
  3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
  4. Переменные. Типы данных и их преобразования. Основные операторы
  5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
  6. Функции и аргументы. Области видимости. Рекурсия. Defer
  7. Массивы и слайсы. Append и сopy. Пакет slices
  8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
  9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
  10. Наследование, абстракция, полиморфизм, инкапсуляция
  11. Обработка ошибок. Паника. Восстановление. Логирование
  12. Обобщенное программирование. Дженерики
  13. Работа с датой и временем. Пакет time
  14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
  15. Конкурентность. Горутины. Каналы
  16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
  17. Основы сетевого программирования. Стек TCP/IP. Сокеты. Пакет net
  18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http

Комментарии

ВАКАНСИИ

Добавить вакансию
Hotel Search Team Lead (Golang)
по итогам собеседования
Golang-разработчик
Пермь, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ