cpp

Разделение пакета на файлы

До сих пор мы размещали программу в одном файле. Однако содержимое пакета может быть распределено по нескольким файлам. Давайте попробуем это сделать.

Эксперименты будем производить в отдельном проекте. Внутри каталога C:\book создаем каталог packages и размещаем в нем два файла: main.go (листинг 12.1) и functions.go (листинг 12.2).

Листинг 12.1. Содержимое файла C:\book\packages\main.go

package main

import "fmt"

func main() {
   fmt.Println(N)             // 10
   fmt.Println(Sum(10, 20))   // 30
}

Листинг 12.2. Содержимое файла C:\book\packages\functions.go

package main

var N int = 10

func Sum(x int, y int) int {
   return x + y
}

Запускаем командную строку и переходим в каталог C:\book\packages:

C:\book\test>cd C:\book\packages

C:\book\packages>

Если мы попробуем запустить программу так, как делали это ранее, то получим сообщение об ошибке, что переменная N и функция Sum() не найдены:

C:\book\packages>go run main.go
# command-line-arguments
.\main.go:6:16: undefined: N
.\main.go:7:16: undefined: Sum

Чтобы запустить программу нужно в команде запуска указать все названия файлов через пробел:

C:\book\packages>go run main.go functions.go
10
30

C:\book\packages>go build -o main.exe main.go functions.go

C:\book\packages>main.exe
10
30

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

C:\book\packages>go run .
10
30

C:\book\packages>go build -o main.exe .

C:\book\packages>main.exe
10
30

Итак, мы разместили код программы в двух файлах. В обоих файлах мы первой строкой добавили объявление пакета main. Поэтому все объявленные переменные и функции добавляются в одно и тоже пространство имен. Причем переменная N и функция Sum(), объявленные внутри файла functions.go, доступны внутри файла main.go без какого-либо дополнительного объявления.

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp