В предыдущем посте вы создали модуль greetings. В этом посте вы напишете код для вызова функции Hello в только что написанном модуле. Вы напишете код, который можно выполнить как приложение, и который вызывает код в модуле greetings.
Примечание. Этот раздел является частью учебного пособия, состоящего из нескольких частей, которое начинается с создания модуля Go.
1. Создайте каталог hello для исходного кода модуля Go. Здесь вы напишете свой код, который будет вызывать greetings.
После создания этого каталога у вас должны быть каталоги hello и greetings на одном уровне иерархии, например:
<home>/
|-- greetings/
|-- hello/
Например, если ваша командная строка находится в каталоге greetings, вы можете использовать следующие команды:
cd ..
mkdir hello
cd hello
2. Включите отслеживание зависимостей для кода, который вы собираетесь написать.
Чтобы включить отслеживание зависимостей для вашего кода, запустите команду go mod init, указав ей имя модуля, в котором будет находиться ваш код.
Для целей этого руководства используйте example.com/hello в качестве пути к модулю.
$ go mod init example.com/hello
go: creating new go.mod: module example.com/hello
3. В текстовом редакторе в каталоге hello создайте файл для записи кода и назовите его hello.go.
4. Напишите код для вызова функции Hello, а затем распечатайте возвращаемое значение функции.
Для этого вставьте следующий код в hello.go.
package main
import (
"fmt"
"example.com/greetings"
)
func main() {
// Получаем приветственное сообщение и распечатываем его.
message := greetings.Hello("Gladys")
fmt.Println(message)
}
В этом коде вы:
- Объявляете main пакет. В Go код, выполняемый как приложение, должен находиться в main пакете.
- Импортируете два пакета: example.com/greetings и пакет fmt. Это дает вашему коду доступ к функциям в этих пакетах. Импорт example.com/greetings (пакет, содержащийся в модуле, который вы создали ранее) дает вам доступ к функции Hello. Вы также импортируете fmt с функциями для обработки ввода и вывода текста (например, вывода текста на консоль).
- Получаете приветствие, вызвав функцию Hello пакета greetings.
5. Отредактируйте модуль example.com/hello, чтобы использовать локальный модуль example.com/greetings.
Для производственного использования вы опубликуете модуль example.com/greetings из его репозитория (с путем к модулю, который отражает его опубликованное местоположение), где инструменты Go могут найти его для загрузки. На данный момент, поскольку вы еще не опубликовали модуль, вам необходимо адаптировать модуль example.com/hello, чтобы он мог найти код example.com/greetings в вашей локальной файловой системе.
Для этого используйте команду go mod edit, чтобы отредактировать модуль example.com/hello, чтобы перенаправить инструменты Go с его пути к модулю (где модуля нет) в локальный каталог (где он находится).
В командной строке в каталоге hello выполните следующую команду:
$ go mod edit -replace=example.com/greetings=../greetings
Команда указывает, что example.com/greetings следует заменить на ../greetings с целью определения зависимости. После запуска команды файл go.mod в каталоге hello должен содержать директиву replace:
module example.com/hello
go 1.16
replace example.com/greetings => ../greetings
Из командной строки в каталоге hello запустите команду go mod tidy, чтобы синхронизировать зависимости модуля example.com/hello, добавив те, которые требуются кодом, но еще не отслеживаются в модуле.
$ go mod tidy
go: found example.com/greetings in example.com/greetings v0.0.0-00010101000000-000000000000
После завершения команды файл go.mod модуля example.com/hello должен выглядеть следующим образом:
module example.com/hello
go 1.16
replace example.com/greetings => ../greetings
require example.com/greetings v0.0.0-00010101000000-000000000000
Команда нашла локальный код в каталоге greetings, а затем добавила директиву require, чтобы указать, что example.com/hello требует example.com/greetings. Вы создали эту зависимость, когда импортировали пакет greetings в hello.go.
Номер, следующий за путем к модулю, является номером псевдоверсии - сгенерированным числом, используемым вместо семантического номера версии (которого у модуля еще нет).
Для ссылки на опубликованный модуль в файле go.mod обычно опускается директива replace и используется директива require с помеченным номером версии в конце.
require example.com/greetings v1.1.0
6. В командной строке в каталоге hello запустите свой код, чтобы убедиться, что он работает.
$ go run .
Hi, Gladys. Welcome!
Вы написали два функционирующих модуля.
В следующем посте вы добавите обработку ошибок.
Читайте также:
- Создание модуля в Golang
- Создание модуля в Golang: возврат и обработка ошибок
- Создание модуля в Golang: возврат случайного приветствия
- Создание модуля в Golang: ответные приветствия для нескольких человек
- Создание модуля в Golang: добавить тест
- Создание модуля в Golang: скомпилируйте и установите приложение
- Новые изменения модулей в Go 1.16
- Управление зависимостями в Golang
Комментариев нет:
Отправить комментарий