go module is the official version management tool introduced after
Go 1.11, and since
Go 1.13, go module has been the default dependency management tool for the Go language. Since
Go 1.14, the
go modules feature has been officially recommended for use in production environments.
Here is a detailed description of how to use the
go module to import local packages.
Suppose we now have two packages,
mypackage, where the
moduledemo package will import the
mypackage package and use its
mypackage/mypackage.go reads as follows.
We now discuss this in two scenarios.
Under the same project
Note: We are allowed to define multiple packages under a project
What happens now is that we call the package
At this point, we need to define it in
moduledemo/go.mod as follows.
Then import the mypackage in
moduledemo/main.go as follows
As an example
Suppose we now have the following file directory structure.
bubble/go.mod reads as follows.
bubble/dao/mysql.go reads as follows.
bubble/main.go reads as follows.
Not under the same project
At this point,
mypackage also needs to be initialized with a module, i.e., have a go.mod file of its own, with the following content.
Then we import in
moduledemo/main.go as follows.
Because the two packages are not in the same project path, you want to import the local packages and they are not published to a remote github or other code repository address. At this point we need to use the
replace directive in the
In the caller, which is
moduledemo/go.mod, specify the relative path to use to find the package
mypackage as follows.
As an example
Finally, let’s consolidate the above with an example.
We now have the following file directory structure.
The function defined in
p1/main.go that you want to import in
The contents of
p2/go.mod are as follows.
p1/main.go as follows
Because I didn’t upload the package
www.sobyte.netq1mi/p2 to the site
www.sobyte.net, we just want to import the local package, and this time we need to use the
p1/go.mod reads as follows.
At this point, we can compile the p1 project normally.