目錄html
一、GOPATH 和 GOROOT
GOROOTGOPATH
Go開發相關的環境變量以下:url
- GOROOT:GOROOT就是Go的安裝目錄,(相似於java的JDK)
- GOPATH:GOPATH是咱們的工做空間,保存go項目代碼和第三方依賴包
GOPATHGOPATHGOPATH
二、修改 GOPATH 和 GOROOT
- GOROOT
GOROOT是Go的安裝路徑。GOROOT在絕大多數狀況下都不須要修改.net
/usr/local/goGOROOT
【以下圖所示則個人GORROT爲:D:\development\go】,如下是GOROOT目錄的內容:
能夠看到GOROOT下有bin,doc和src目錄。bin目錄下有咱們熟悉的go和gofmt工具。能夠認爲GOOROOT和Java裏的JDK目錄相似。
- GOPATH
GOPATH是開發時的工做目錄。用於:
go getgo install
使用GOPATH時,GO會在如下目錄中搜索包:
GOROOT/srcGOPATH/src
假設程序中引入了以下的包:
import "Go-Player/src/chapter17/models"
GOPATH/src/
三、HelloWord——GOPATH版
(1)設置並查看GOPATH和GOROOT環境變量
- 安裝go SKD目錄:D:\development\go
- go項目存放目錄:D:\development\jetbrains\goland\workspace,而且此目錄下含有bin、src、pkg三個文件夾,src文件夾用來存放項目代碼
當引入module時,首先在GOROOT的src目錄下查找,而後再GPOPATH的src目錄下查找
(2)GOLand環境配置
- 在D:\development\jetbrains\goland\workspace\src目錄下新建項目GO-Player
bin:存放編譯後的exe文件
pkg:存放自定義包的目錄
src:存放項目源文件的目錄
- 按以下指令進行配置
- 可在Settings中選擇SDK和添加GOPATH
(3)測試
- models:Student.go
- main:hello.go
package main import ( //"./models" //相對路徑 "Go-Player/src/ademo/models" //根據GOPATH找 //根據GOPATH:D:\development\jetbrains\goland\workspace,在其src目錄下查找 //即GOPATH/src/Go-Player/src/ademo/models "fmt" ) func main() { stu := models.Student{ Name: "張三", } fmt.Println(stu) }
此篇文章僅介紹網上大部分GOPATH版本。Go語言Hello World都只簡單地介紹了GOPATH版本。可是從Go的1.11版本以後,已再也不推薦使用GOPATH來構建應用了。也就是說GOPATH被認爲是廢棄的,錯誤的作法。
四、一些踩坑經驗
當你開啓了GO111MODULE,仍然使用GOPATH模式的方法,在引入自定義模塊時會報錯。go mod具體使用將在下一篇介紹
GO111MODULEoffonauto(默認值)
GO111MODULE=offGO111MODULE=onGO111MODULE=auto
$GOPATH/pkg
(1)使用了了相對路徑:import "./models"
- 報錯:build command-line-arguments: cannot find module for path _/D_/dev這裏後面一堆本地路徑
這是由於在go module下 你源碼中 impot …/ 這樣的引入形式不支持了, 應該改爲 impot 模塊名/ 。 這樣就ok了
(2)使用結合了GOPATH的形式:import "Go-Player/src/ademo/models"
因而咱們把上面的import改爲告終合GOPATH的如上形式
- 報錯:package Go-Player/src/ademo/models is not in GOROOT D:/development/go/src/GPlayer/src/ademo/models
(3)完全解決方法:用go env -u 恢復初始設置
再也不使用go mod:
- go env -w GO111MODULE=off 或者 go env -w GO111MODULE=auto
- go env -u GO111MODULE
區別在於,若是GO111MODULE=on或者auto,在go get下載包時候,會下載到GOPATH/pkg/mod,引入時也是一樣的從這個目錄開始。若是這行了上述命令,那麼在go get下載包時候,會下載到GOPATH/src 目錄下
本文僅介紹Hello world(GOPATH版),雖然此種方法不推薦使用,可是初學者在使用的時候仍會遇到不少問題。後續將介紹如何使用Go Module版
參考博客: