Golang: структура не отображается в том же пакете, но во вложенной папке

Я работаю над проектом Go со следующей структурой:

      pages (folder)
     -> faculty (folder)
        > instructors.go 
        > professors.go

     generalpages.go (inside pages folder)

generalpages.go обрабатывает мою структуру шаблона репозитория со следующим объявлением:

      type Repository struct {
    App *config.AppConfig
}

Все общие страницы (например, «Главная», «О программе») работают правильно с таким типом объявления:

      func (m *Repository) AboutPage(w http.ResponseWriter, r *http.Request) {
 // some functionality
}

Однако, если я хочу структурировать свои страницы и использовать одно и то же объявление для моей InstructorsPage (внутри Instructor.go), как показано ниже, это не сработает, и в VSCode появится сообщение об ошибке «необъявленное имя».

Насколько я понимаю, объект должен быть виден в одном пакете, но все равно он не работает. "go build" не вызывает ошибок, но когда я использую пакет маршрутизации (chi), он не может правильно ссылаться на него.

1 ответ

Пакеты Go не работают.

Если ваша структура каталогов:

      moduleRootDir
  parentDir
     subDir

и если оба каталога определяют имя пакета pkg, то это два разных пакета.

Если имя модуля module, то путь импорта для пакета в parentDir будет module/pkg, а пакет в подкаталоге - module/pkg/pkg. Чтобы использовать имена, определенные в подкаталоге, импортируйте его в файлы go в parentDir:

      package pkg

import (
   subpkg "module/pkg/pkg"
)

Затем вы можете получить к ним доступ, используя subpkg.SymbolName.

Другие вопросы по тегам