Access main package from other package
Asked Answered
K

2

62

I want to access the main package from another package, but this is impossible because the main file isn't in a directory. I already tried putting the main file in a directory, but when I try to import it I get this error:
import "../main" is a program, not an importable package

The reason that I want this because I have a tcp server and a webserver that work together. The webserver can get the tcp server via the main package and the tcp server can get the webserver via the main package.

I already got it working with the webserver and tcpserver reading from each other(without the main package in the middle), but I want to keep some parts of the application at one place.

Is the the thing I want possible(Via the main package)? Or is it just stupid.

Knew answered 7/6, 2017 at 19:2 Comment(1)
Without knowing the specifics, it sounds like you should have the webserver be under "package webserver" and the tcp server under "package tcpserver". You can then spin up a go program importing those two libraries. I do not believe you are able to import another package's "main" while you are inside "package main" already.Codie
O
113

You cannot import the main package. Any shared code should go in a separate package, which can be imported by main (and other packages).

Overlook answered 7/6, 2017 at 19:19 Comment(3)
See also groups.google.com/forum/#!topic/Golang-nuts/frh9zQPEjUk for discussion.Goncourt
@Overlook What if you have something you need to initialize in main, such as a logger (pkg.go.dev/go.uber.org/zap#example-package-Presets)? You cannot have that in a utility package, for example, because you can't run main().Phototherapy
Then main should pass it to the functions/methods it calls.Overlook
H
1

Another way to fix this is to pass a function call from the main . in which you create a function in your tcp or webserver then accepts a value in a function . then call it in the main

Because golang main is a program, not an importable package

Hydrogen answered 18/9, 2022 at 9:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.