Руководство для начинающих по программированию на Go

GolangGolangIntermediate
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) мы официально начнем изучать программирование на языке Go. Мы рассмотрим основные концепции и самостоятельно напишем простую программу на Go.

Точки знания:

  • Стандартный оператор вывода
  • Структура кода
  • Запуск программы
  • Общие функции в пакете fmt

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go(("Golang")) -.-> go/CommandLineandEnvironmentGroup(["Command Line and Environment"]) go(("Golang")) -.-> go/NetworkingGroup(["Networking"]) go/FunctionsandControlFlowGroup -.-> go/if_else("If Else") go/FunctionsandControlFlowGroup -.-> go/functions("Functions") go/CommandLineandEnvironmentGroup -.-> go/command_line("Command Line") go/NetworkingGroup -.-> go/processes("Processes") go/NetworkingGroup -.-> go/exit("Exit") subgraph Lab Skills go/if_else -.-> lab-149062{{"Руководство для начинающих по программированию на Go"}} go/functions -.-> lab-149062{{"Руководство для начинающих по программированию на Go"}} go/command_line -.-> lab-149062{{"Руководство для начинающих по программированию на Go"}} go/processes -.-> lab-149062{{"Руководство для начинающих по программированию на Go"}} go/exit -.-> lab-149062{{"Руководство для начинающих по программированию на Go"}} end

💡 Первая программа на Go

Начнем с создания нашей первой программы на Go. Щелкните правой кнопкой мыши по боковой панели и создайте новый файл с именем helloWorld.go в папке проекта.

Описание изображения

Примечание: Мы рекомендуем использовать WebIDE (похожий на VS Code) для лучшего опыта. Узнайте больше о руководстве по использованию WebIDE здесь.

Вы также можете создать новый файл с помощью команды touch:

touch helloWorld.go

Теперь откройте файл и напишите следующий код:

package main

import "fmt"

func main() {
    fmt.Println("hello, world")
}

Первая строка, package main, указывает, что эта программа принадлежит пакету main. Вторая строка, import "fmt", импортирует пакет fmt языка Go, который позволяет нам форматировать ввод и вывод текста. Функция main является точкой входа в программу, и внутри нее fmt.Println("hello, world") выведет hello, world в терминал.

Чтобы запустить программу, откройте терминал и введите следующую команду:

go run helloWorld.go

Если все настроено правильно, вы должны увидеть следующий вывод:

hello, world

Это простая программа "Hello World". Теперь давайте разберем код и операции построчно.

Структура и синтаксис программы

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

Инструкция import "fmt" импортирует пакет fmt языка Go, который используется для ввода и вывода. Go имеет обширную стандартную библиотеку, которая позволяет нам легко выполнять многие задачи. Пакет fmt используется для форматирования текстового вывода, как мы видели на предыдущем шаге.

Далее мы определяем функцию main:

func main() {
}

В Go все функции должны начинаться с func. Обратите внимание, что открывающая фигурная скобка { размещается в конце строки. Это соглашение в Go, и оно отличается от других языков программирования, где открывающая скобка может быть размещена на новой строке.

Если вы ошибочно поместите открывающую скобку на новую строку, как показано ниже:

func main()
{
}

Вы получите ошибку компиляции:

$ go run helloWorld.go
### command-line-arguments
./helloWorld.go:7:1: syntax error: unexpected semicolon or newline before {

Это происходит потому, что Go ожидает, что открывающая скобка будет непосредственно на той же строке.

Ключевой инструкцией в программе является fmt.Println("hello, world"), которая вызывает функцию Println пакета fmt для вывода строки "hello, world" в консоль. Эта функция автоматически добавляет символ новой строки в конце строки.

Запуск программы

Go - это компилируемый язык, но когда мы используем команду go run, Go сначала компилирует исходный код, а затем запускает полученный исполняемый файл. Таким образом, команда:

go run helloWorld.go

эквивалентна выполнению этих двух команд:

## Компилируем программу
go build helloWorld.go

## Запускаем скомпилированную программу
./helloWorld

Чтобы попробовать новый пример, изменим программу так, чтобы она приветствовала других поклонников Go (Gophers). Создайте новый файл с именем helloGopher.go и замените код на следующий:

Вы можете создать новый файл с помощью команды touch:

touch helloGopher.go
package main

import "fmt"

func main() {
 fmt.Println("hello Gopher.")
 fmt.Println("hello Gopher.")
 fmt.Println("hello Gopher.")
}

Теперь, вместо использования go run, мы будем использовать go build для компиляции программы, а затем запустим сгенерированный исполняемый файл:

## Компилируем программу
go build helloGopher.go

## Запускаем скомпилированный исполняемый файл
./helloGopher

В результате будет выведено:

hello Gopher.
hello Gopher.
hello Gopher.

Общие функции в пакете fmt

В Шаге 1 мы использовали функцию Println() из пакета fmt для вывода данных. Пакет fmt является одним из наиболее часто используемых пакетов в Go и предоставляет несколько функций для форматирования вывода.

Вот три общие функции вывода:

  1. fmt.Print() – Выводит текст без перевода строки.
  2. fmt.Println() – Выводит текст с переводом строки.
  3. fmt.Printf() – Выводит отформатированный текст.

Давайте рассмотрим эти функции более подробно. Создайте новый файл с именем fmt.go и введите следующий код:

package main

import "fmt"

func main() {
    // Стандартный вывод
    fmt.Print("hello")
    fmt.Print("world")

    // Println добавляет символ перевода строки после стандартного вывода
    fmt.Println()
    fmt.Println("labex")

    // Printf обеспечивает форматированный вывод
    fmt.Printf("%s\n", "London")
}

Запустите программу с помощью команды go run:

go run fmt.go

Пояснения:

  • fmt.Print("hello") и fmt.Print("world") выводят текст на одной строке, так как Print не добавляет перевод строки.
  • fmt.Println() выводит перевод строки для разделения строк.
  • fmt.Printf("%s\n", "London") форматирует вывод, используя заполнитель %s для строки "London".

Вот быстрый сравнительный анализ функций:

Функция Стандартный вывод Перевод строки Форматированный вывод
Print × ×
Println ×
Printf × ×

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

Итоги

В этом практическом занятии мы написали нашу первую программу на Go, изучили структуру программ на Go и рассмотрели основные функции пакета fmt для вывода данных. Мы также практиковались в запуске программ на Go и узнали различия между функциями Print, Println и Printf. Теперь у вас должна быть базовая концепция синтаксиса Go и выполнения программ на этом языке.