Golang: Привет, Мир!
По традиции начнем с написания программы 'Hello, World!'. Эта программа будет выводить на экран текст:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Пояснение
Пакеты в Go выполняют роль неймспейсов — логических единиц, объединяющих функции и типы. Каждый файл в Go должен принадлежать какому-то пакету. Если вы хотите, чтобы программа была исполняемой, файл должен принадлежать пакету main — это сигнал компилятору, что здесь содержится точка входа в программу.
Затем мы импортировали пакет fmt
:
import "fmt"
Go устроен минималистично: чтобы использовать функции из стандартной библиотеки или сторонних модулей, их необходимо явно импортировать. Пакет fmt содержит функции форматированного ввода и вывода, включая Print, Println, Printf и другие. Импорт всегда указывается в начале файла, сразу после названия пакета.
Далее идёт определение главной функции:
func main() {
...
}
main()
— это точка входа в программу. Она вызывается автоматически при запуске и должна обязательно присутствовать в исполняемом Go-приложении. Функция main не принимает аргументов и ничего не возвращает. Внутри неё описывается логика запуска программы.
Для вывода текста на экран используется функция:
fmt.Print("Hello, World!")
Обратите внимание, что fmt — это не объект, а имя пакета. В Go нет классов, и всё устроено проще: функции организованы по пакетам, и к ним обращаются по следующему синтаксису: пакет.функция. Вызов fmt.Print(...) означает: "вызвать функцию Print из пакета fmt".
Дополнительно
- В конце строки не ставится точка с запятой — компилятор Go автоматически расставляет ; за вас в большинстве случаев.
- Отступы важны: по соглашению в Go используется 1 таб, а не пробелы.
- Если бы вы забыли импортировать fmt, программа не скомпилируется — Go строго требует явного указания зависимостей.
Задание
Наберите в редакторе код из задания символ в символ и нажмите «Запустить».
// Определение пакета
package main
// Импорт пакета
import "fmt"
// Определение функции main
func main() {
// Вызов функции Print из пакета fmt
// Отступ 1 таб
fmt.Print("Hello, World!") // В конце не нужна точка с запятой
}
Полезное
Go Playground — здесь вы можете экспериментировать с кодом на Go.
Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Ваше упражнение проверяется по этим тестам
package main
import (
"fmt"
"log"
"os/exec"
"testing"
)
func TestHelloWorld(t *testing.T) {
cmd := exec.Command("go", "run", "solution.go")
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatalf("error on running the command: %v\n", err)
}
fmt.Println(string(out))
// Output:
// Hello, World!
}
Решение учителя откроется через:
20:00
