在子包中引用包main

new to Golang and have a seemingly simple question. If I have a logger in package main (and defined in logger.go) at my project root, how do I reference that logger in a subpackage (ie: my routes package)?

My directory structure is:

  • main.go
  • logger.go
  • routesoutes.go
  • ...

I would think if Logger is public it would already be available to routes, but I get 'undefined: Logger' in routes.go. And if I try to import my main package in routes.go I get an 'import cycle not allowed' error since routes.go imports package main and main.go imports package routes.

Any help would be much appreciated!

The only way to resolve this is to move the shared logger to a third package and import it into both main and routes. Otherwise you get a cyclic dependency which as you've seen is not allowed.

Simply add a folder called logger and put your logger in there. now import it into the other 2 packages, and you're done.