https://www.jianshu.com/p/bbed916d16ea
如果你還在使用 GOPATH 模式來開發Golang程序,那么你可以參考本文來告別 GOPATH,並帶給你一個方便的包管理工具。
關於 go mod 的說明和簡單使用,可以參考:
使用go mod 管理項目,就不需要非得把項目放到GOPATH指定目錄下,你可以在你磁盤的任何位置新建一個項目,比如:
新建一個名為 wserver 的項目,項目路徑 D:\test\wserver (注意,該路徑並不在GOPATH里)

進入項目目錄 D:\test\wserver 里,新建一個 go源碼文件: main.go

然后在 D:\test\wserver 里打開終端執行命令: go mod init wserver (go mod init 后面需要跟一個名字,我這里叫wserver)

看到提示 “go: creating new go.mod: module wserver” 說明 go mod 初始化成功了,會在當前目錄下生成一個 go.mod 文件。
包含go.mod文件的目錄也被稱為模塊根,也就是說,go.mod 文件的出現定義了它所在的目錄為一個模塊。
執行上述命令之后,其實你已經可以開發編譯運行此項目了,比如我們隨便使用github上的一個包,在終端打印一下

運行一下,會看到輸出結果: { false false false} ,同時項目目錄下多出了一個文件 go.sum 。go.sum 是記錄所依賴的項目的版本的鎖定。

現在我們再建一個項目內的包 route :

在 main.go 里如果需要使用這個包,需要使用這個包的 模塊內的絕對路徑來導入,比如:

"wserver/route" 導入這個包的地方是 模塊內的絕對路徑,就是要從go.mod所在的目錄開始。
另外,如果我們想把這個項目放到GOPATH下面,不使用go mod模式,而是想使用GOPATH模式的話,,只需要把這個項目移到GOPATH環境變量包含的任意一個目錄下面的src目錄里,就可以啟用GOPATH模式了(前提是 GO111MODULE 這個環境變量的值必須是auto 或 off)。
比如:gotest 目錄是GOPATH環境變量里的其中一個目錄,我們將上面的代碼復制到 src 目錄下,刪除原來的go.mod 、go.sum 兩個文件(也可以不刪除),代碼一樣可以運行:

小總結:
使用go mod ,利用Go 的 module 特性,你再也不需要關心GOPATH了(當然GOPATH變量還是要存在的,但只需要指定一個目錄,而且以后就不用我們關心了), 你可以任性的在你的硬盤任何位置新建一個Golang項目了。
好了,本文就是個非常簡單的小示例,只是告訴初次使用go mod的人,如何快速開始使用go mod 。詳細的概念和使用方法,請仔細閱讀開頭列出的3篇文章。