“Hello, World!” — это классическая программа, традиционно используемая в компьютерном программировании. Это простая и полноценная первая программа для начинающих, и с ее помощью легко определить, что среда настроена правильно.
В этом обучающем руководстве мы подробно рассмотрим создание этой программы на языке Go. Чтобы сделать программу поинтереснее, мы изменим традиционную программу “Hello, World!” так, чтобы она запрашивала имя пользователя. Затем это имя можно будет использовать в приветствии. После завершения этого обучающего модуля у вас будет программа, которая будет выглядеть при запуске следующим образом:
OutputPlease enter your name.
Sammy
Hello, Sammy! I'm Go!
Для начала прохождения этого обучающего модуля на вашем компьютере должна быть настроена локальная среда разработки Go. Вы можете настроить ее, следуя указаниям одного из следующих обучающих руководств:
Чтобы написать программу “Hello, World!”, откройте nano
или другой текстовый редактор командной строки и создайте новый файл:
- nano hello.go
Когда текстовый файл откроется в окне терминала, мы напишем нашу программу:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Давайте обсудим отдельные компоненты кода.
package
— это ключевое слово Go, определяющее, к какому пакету кода принадлежит данный файл. Для каждой папки может иметься только один покет, и в начале каждого файла .go
должно декларироваться имя того же пакета. В этом примере код принадлежит пакету main
.
import
— это ключевое слово Go, указыващее компилятору Go, какие другие пакеты вы хотите использовать в этом файле. Здесь вы импортируете пакет fmt
из стандартной библиотеки. Пакет fmt
содержит функции форматирования и вывода, которые могут быть полезны при разработке.
fmt.Println
— это функция Go из пакета fmt
, которая предписывает компьютеру вывести текст на экран.
После функции fmt.Println
идет последовательность символов в кавычках, например "Hello, World!"
. Любые символы внутри кавычек называются строкой. Функция fmt.Println
выведет эту строку на экран при выполнении программы.
Сохраните файл и закройте nano
, нажав CTRL + X
. Когда вам будет предложено сохранить файл, нажмите Y
.
Теперь вы можете проверить программу в действии.
После написания программы “Hello, World!” вы можете ее запустить. Для этого используется команда go
, после которой идет имя только что созданного файла.
- go run hello.go
Программа будет исполнена и выведет на экран следующее:
OutputHello, World!
Посмотрим, что фактически произошло.
Перед запуском программы Go требуют компиляции. При вызове go run
с именем файла, в данном случае hello.go
, команда go
компилирует приложение и запускает полученный двоичный файл. Если программа написана на компилируемом языке программирования, компилятор берет исходный код программы и генерирует другой тип кода низкого уровня (например, машинный код) для получения исполняемой программы.
Приложения Go должны иметь пакет main
и ровно одну функцию main()
, которая будет выступать в качестве точки входа приложения. Функция main
не принимает аргументов и не возвращает никаких значений. Вместо этого она сообщает компилятору Go, что пакет должен быть скомпилирован как исполняемый пакет.
После компиляции код запускается посредством входа в функцию main()
в пакете main
. Программа выполняет строку fmt.Println("Hello, World!")
, вызывая функцию fmt.Println
. Значение строки Hello, World!
передается функции. В этом примере строка Hello, World!
также называется аргументом, поскольку это значение, которое передается методу.
Кавычки, в которые заключена фраза Hello, World!
, не выводятся на экране, поскольку они показывают Go, где начинается и кончается ваша строка.
На этом шаге вы создали работающую программу “Hello, World!” с помощью Go. На следующем шаге мы покажем, как сделать программу более интерактивной.
При каждом запуске программа дает один и тот же результат. На этом шаге вы добавите в программу запрос имени пользователя. Затем это имя можно будет использовать в выводимых результатах.
Вместо изменения существующей программы создайте новую программу greeting.go
с помощью редактора nano
:
- nano greeting.go
Вначале добавьте этот код, который предлагает пользователю ввести имя:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
}
Затем используйте функцию fmt.Println
для вывода текста на экран.
Затем добавьте выделенную строку для сохранения введенных пользователем данных:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
var name string
}
Строка var name string
создаст новую переменную с помощью ключевого слова var
. Мы присваиваем этой переменной имя name
, и она имеет тип string
.
Затем добавьте выделенную строку для записи вводимых пользователем данных:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
var name string
fmt.Scanln(&name)
}
Метод fmt.Scanln
предписывает компьютеру ожидать ввода данных с клавиатуры, заканчивающегося символом новой строки или (\n
). Это приостанавливает выполнение программы, позволяя пользователю ввести любой желаемый текст. Программа продолжит выполнение, когда пользователь нажмет клавишу ENTER
на клавиатуре. Все нажатия клавиш, включая нажатие клавиши ENTER
, регистрируются и конвертируются в строку символов.
Нам нужно использовать эти символы в выводимых программой результатах, и поэтому мы сохраним их, записав их в строковую переменную с именем name
. Go хранит эту строку в памяти компьютера до завершения выполнения программы.
В заключение добавьте в программу следующую выделенную строчку для вывода результатов:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
var name string
fmt.Scanln(&name)
fmt.Printf("Hi, %s! I'm Go!", name)
}
На этот раз вместо использования метода fmt.Println
мы используем fmt.Printf
. Функция fmt.Printf
берет строку и использует специальные глаголы вывода (%s
) для вставки значения name
в строку. Мы делаем это так, потому что Go не поддерживает интерполяцию строк, при которой можно брать значение переменной и помещать его внутри строки.
Сохраните файл и закройте nano
, нажав CTRL + X
. Нажмите Y
, когда вам будет предложено сохранить файл.
Запустите программу. Вам будет предложено ввести имя, так что введите его и нажмите ENTER
. Результат может немного не соответствовать ожиданиям:
OutputPlease enter your name.
Sammy
Hi, Sammy
! I'm Go!
Вместо Hi, Sammy! I'm Go!
после имени выводится разрыв строки.
Программа зарегистрировала все нажатия клавиш, включая клавишу ENTER
, которую мы нажимаем, чтобы программа продолжила выполнение. При нажати клавиши ENTER
создается специальный символ, которы создает новую строку. Программа делает именно то, что ей предписывается, то есть отображает введенный текст, включая символ новой строки. Это не то, чего вы ожидаете от вывода, но вы можете исправить проблему с помощью дополнительных функций.
Откройте файл greeting.go
в редакторе:
- nano greeting.go
Найдите в программе следующую строчку:
...
fmt.Scanln(&name)
...
Добавьте после нее следующую строчку:
name = strings.TrimSpace(name)
Она использует функцию TrimSpace
из стандартной библиотеки Go strings
в строке, которую вы записали с помощью fmt.Scanln
. Функция strings.TrimSpace
удаляет символы пробела, в том числе символы новой строки в начале и конце строки. В данном случае будет удален символ новой строки в конце строки, созданный при нажатии клавиши ENTER
.
Чтобы использовать пакет strings
, его нужно импортировать в программу.
Найдите в программе следующие строки:
import (
"fmt"
)
Добавьте следующую строку для импорта пакета strings
:
import (
"fmt"
"strings"
)
Теперь программа будет содержать следующее:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println("Please enter your name.")
var name string
fmt.Scanln(&name)
fmt.Printf("Hi, %s! I'm Go!", name)
name = strings.TrimSpace(name)
}
Сохраните и закройте nano
. Нажмите CTRL + X
, а затем нажмите Y
, когда вам будет предложено сохранить файл.
Запустите программу снова:
- go run greeting.go
Теперь после ввода имени и нажатия клавиши ENTER
выводится ожидаемый результат:
OutputPlease enter your name.
Sammy
Hi, Sammy! I'm Go!
Теперь у вас имеется программа Go, которая принимает данные пользователя и выводит их на экран.
В этом обучающем руководстве мы написали программу “Hello, World!”, которая принимает вводимые пользователем данные, обрабатывает результаты и выводит их на экран. Теперь у вас имеется базовая программа для работы, и вы можете попробовать дополнить и расширить ее. Например, вы можете спросить любимый цвет пользователя и сделать так, чтобы программа говорила, что его любимый цвет красный. Вы даже можете использовать эту же методику для создания простой программы Mad-Lib.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.