Не имея опыта работы с C/компилированными языками, я нахожу трудным разобраться в использовании пакетного механизма 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 кажутся немногословными и ориентированы на людей с большим (любым) опытом использования makefiles и компиляторов.
Кто-нибудь может объяснить, пожалуйста, как вы собираетесь модулировать свой код в Go, правильную структуру проекта для этого, и как работает компиляция?