Не имея опыта работы с языками C / compiled, мне трудно разобраться с использованием механизма пакетов Go для создания модульного кода.
В Python, чтобы импортировать модуль и получить доступ к его функциям и так далее, это простой случай
import foo
где foo.py - это имя модуля, который вы хотите импортировать в тот же каталог. В противном случае вы можете добавить пустой __init__.py
в подпапку и получить доступ к модулям через
from subfolder import foo
Затем вы можете получить доступ к функциям, просто ссылаясь на них через имя модуля, например, y = foo.bar(y)
. Это позволяет легко отделять логические части кода друг от друга.
Однако в Go вы указываете имя пакета в самом исходном файле, например,
package foo
вверху модуля 'foo', который вы затем можете импортировать через
import (
"foo"
)
и затем обратитесь к нему через это, то есть y := foo.Bar(x)
. Но то, что я не могу обернуть мою голову, - то, как это работает на практике. Соответствующие документы на golang.org кажутся краткими и предназначены для людей с большим (любым) опытом использования make-файлов и компиляторов.
Может кто-нибудь объяснить, как вы собираетесь модульно кодировать в Go, какова правильная структура проекта и как работает процесс компиляции?