Модули и файлы
Bootstrap module system — локальные импорты, пакеты, lockfile и текущая dependency story.
Bootstrap module system в gof по-прежнему маленький и строгий намеренно.
Локальные импорты
import name ищет модуль в детерминированном порядке:
name.gofрядом с импортирующим файломsrc/name.gofвнутри ближайшего package root сgof.modsrc/lib.gofиз локальной зависимости
Зарезервированные stdlib-импорты: import bytes, import io, import time, import net, import http.
Пример пакета:
app/
gof.mod
src/
main.gof
math.gofс gof.mod:
module = "example/app"
edition = "2026"
[dependencies]и src/main.gof:
import math
fn main() -> int:
return square(9)Локальные path dependencies
module = "example/package_app"
edition = "2026"
[dependencies]
package_math = { path = "../package_math" }src/lib.gof — dependency entrypoint для import package_math.
Locking локального графа
gof mod resolve --dir package_appПравила:
gof.lock— единственный lockfile format- писать его умеет только
gof mod resolve gof run,gof buildиgof testтребуют свежий lockfile для manifest-backed packages- изменения
gof.modили dependency paths делают lockfile stale
Как ведет себя текущий module graph
- same-directory imports
- shipped stdlib imports через зарезервированные module names
- package-root imports через ближайший
gof.mod - локальные path dependencies через
[dependencies] - один merged bootstrap module graph
- запрещены: import cycles, duplicate top-level names
Как лучше организовывать программы
gof.modв корне пакетаsrc/main.gofдля entrypointsrc/lib.gofдля dependency-facing exports- helper logic по понятным модулям внутри
src/