DEV Community

Cover image for Module Management for Golang on Win10
Plume
Plume

Posted on • Edited on

2 3

Module Management for Golang on Win10

#go

Install and Config Golang on Win10

Create a Module

  1. Create a new directory, in this example, I Created "A:/Learn/Go/Work".

  2. Open cmd or PowerShell, jump to the new directory.
    cd /d A:/Learn/Go/Work

  3. Run go mod init Aoi/Sola where Aoi/Sola will be the new module's name. This will create a go.mod File in "A:/Learn/Go/Work", make "A:/Learn/Go/Work" the new module's root directory.

The go.mod file's content will be:

module Aoi/Sola

go 1.17 
Enter fullscreen mode Exit fullscreen mode

Where Aoi/Sola is the new module's name, 1.17 is Golang's version number.

Hello World

Create a source file in module's root directory(in this example "A:/Learn/Go/Work").

In this example, I created hello.go.

hello.go's content:

package main // "package main" specifies the package name: "main"

// Golang's main func have no return no argument.
func main(){
  println("Hello World") // Output "Hello World" through standard error.
}
Enter fullscreen mode Exit fullscreen mode

Every source file's first line should be a package <package_name> statement.
A Golang program can only have one "main" package.

Jump to module's root directory(in this example "A:/Learn/Go/Work"), run go run hello.go, you will see "Hello World" in standard error output.

Import Module

Import Remote Module

Create another module in another directory, in this example I created a module named "remote" in "A:/Learn/Go/Remote".
Create a source file in "A:/Learn/Go/Remote", I created remote.go.

remote.go's content:

package remote  // "hello.go" will refer variable Str with name "remote.Str", the package name "remote" is also used as namespace.

var Str = "I Love Aoi Sola" // Variable/Function name's first letter must be uppercase, or they can't be accessed out of current module.
Enter fullscreen mode Exit fullscreen mode

Then push "A:/Learn/Go/Remote" to a remote repository and change the module name to the repository's url:

Change Module Name1

Change Module Name2

Change hello.go's content to:

package main

import "github.com/ChengAnXu2014/GoModule"   // module name is also remote repository's URL.

func main(){
  println(remote.Str)    // refer varialbe Str with "remote.Str".
}
Enter fullscreen mode Exit fullscreen mode

Run go mod tidy in "A:/Learn/Go/Work" to upgrade module Aoi/Sola's go.mod file.
Golang will download module github.com/ChengAnXu2014/GoModule's content to the directory specified by environment variable GOPATH.

And module Aoi/Sola's go.mod file's content will be like:

module Aoi/Sola

go 1.17

require github.com/ChengAnXu2014/GoModule v0.0.0-20210624111742-626d6b55d79e // means current module require module `github.com/ChengAnXu2014/GoModule`.
// if any tags is created, the most recent tag's commit will be used, vx.x.x will be the most recent tag number.
// if no tag is created, the most recent commit is used, vx.x.x will be v0.0.0
// 20210624111742 is the used commit's commit time(2021/06/24 11:17:42).
// 626d6b55d79e is the used commit's name, and is also the used commit's checksum.

Enter fullscreen mode Exit fullscreen mode

For security, Golang won't access third-party repository by default, to change that you must set the environment variable GOPRIVATE(see below).

Now run go run hello.go in "A:/Learn/Go/Work", "I Love Aoi Sola" will be output through standard error.

If you changed remote module, then delete "require ..." statement from module Aoi/Sola's go.mod and run go mod tidy.
Golang will download from remote module and upgrade module Aoi/Sola's go.mod again.

GOPRIVATE

For security, Golang won't access third-party repository by default, to change that you must set the environment variable GOPRIVATE.

Set GOPRIVATE

Multiple URLs can be separated by ,.

Import Local Module

Change "A:/Learn/Go/Remote/remote.go" to:

package remote

var Str = "I'm Local Module!!!"
Enter fullscreen mode Exit fullscreen mode

Change module Aoi/Sola's go.mod to:

module Aoi/Sola

go 1.17

replace github.com/ChengAnXu2014/GoModule => A:/Learn/Go/Remote
Enter fullscreen mode Exit fullscreen mode

delete "require..." statement and add "replace..." statement to map github.com/ChengAnXu2014/GoModule to local directory "A:/Learn/Go/Remote"

Then run go mod tidy in "A:/Learn/Go/Work" to upgrade module Aoi/Sola's go.mod.

Run go run hello.go in "A:/Learn/Go/Work", you will see "I'm Local Module!!!" in standard error output.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay