Hacker News new | ask | show | jobs
by mutatio 4339 days ago
I was referring to Go's magic func init()

Putting that in your files, let's say:

  db.go func init() => handle global DB's...

  templates.go func init() => handle HTML templates...

  settings.go func init() => load some settings...
All fired automatically prior to your applications main() entry point WITHOUT needing to pollute main() with initDB(); initTemplates(); initSettings() etc. etc.
2 comments

They're trying to pass the objects created at startup into other objects, so that dependencies are explicit and can be mocked out in unit tests. You can't do this with init(), which always takes no arguments and returns no values.

    > I was referring to Go's magic func init()
I know you were; I'm arguing that components shouldn't need an explicit initialization step, but rather they should be initialized as part of their `NewFoo` constructor.