golang中g(shù)opath的介紹-創(chuàng)新互聯(lián)

gopath的詳細(xì)步驟內(nèi)容。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比長(zhǎng)子網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式長(zhǎng)子網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋長(zhǎng)子地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

  • 在本章中,我們將介紹go語(yǔ)言的項(xiàng)目結(jié)構(gòu)、項(xiàng)目管理以及依賴管理。在本文中,我們關(guān)注gopath


  • 在go語(yǔ)言開(kāi)發(fā)環(huán)境配置文章中,我們介紹了配置gopathgoroot環(huán)境變量的步驟,但是并沒(méi)有對(duì)其進(jìn)行深入解釋??梢栽诮K端輸入 go env 或者go env gopath查看具體的配置

C:\Windows\system32> go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\jackson\AppData\Local\go-build
set GOENV=C:\Users\jackson\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\jackson\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
...
  • 在go1.8之后,如果不指定gopath,則gopath是默認(rèn)的。

    • 在mac,linux下為$HOME/go

    • windows 下為%USERPROFILE%\g

  • gopath 可以理解為go語(yǔ)言的工作空間,內(nèi)部存儲(chǔ)了src,bin,pkg 三個(gè)文件夾

go/
├── bin
├── pkg
└── src
  • $GOPATH/bin目錄存儲(chǔ)了通過(guò)go install 安裝的二進(jìn)制文件。操作系統(tǒng)使用PATH變量中

  • $GOPATH/pkg目錄中,會(huì)存儲(chǔ)預(yù)編譯的obj文件(文件名根據(jù)操作系統(tǒng)的不同而不同,例如mac下為darwin_amd64),以加快程序的后續(xù)編譯。大多數(shù)開(kāi)發(fā)人員不需要訪問(wèn)此目錄。后面還會(huì)介紹,pkg下的mod文件還會(huì)存儲(chǔ)go module的依賴。

  • $GOPATH/src目錄 存儲(chǔ)我們項(xiàng)目的go代碼。通常包含許多版本控制存儲(chǔ)庫(kù)(例如,由Git管理),每個(gè)存儲(chǔ)庫(kù)都包含了一個(gè)或多個(gè)package,每個(gè)package都在一個(gè)目錄中包含一個(gè)或多個(gè)Go源文件。

  • 因此,整個(gè)路徑看起來(lái)像是:

go/
├── bin
     └── main.exe
├── pkg
     ├── darwin_amd64
     └── mod
└── src
    ├── github.com
    │   ├── tylfin
    │   │   ├── dynatomic
    │   │   └── geospy
    │   └── uudashr
    │       └── gopkgs
    └── golang.org
        └── x
            └── tools
  • gopath具有多個(gè)作用,當(dāng)我們想從github或其他地方獲取go項(xiàng)目代碼時(shí),我們可以使用go get指令。 此時(shí)程序會(huì)默認(rèn)的將代碼存儲(chǔ)到$GOPATH/src目錄中。例如拉取go get github.com/dreamerjackson/theWayToGolang時(shí),目錄結(jié)構(gòu)如下:

go/
├── bin
├── pkg
└── src
    └── github.com
           └── dreamerjackson
                     └── theWayToGolang
  • 當(dāng)我們使用go get-u參數(shù)時(shí),會(huì)將該項(xiàng)目以及項(xiàng)目所依賴的所有其他項(xiàng)目一并下載到$GOPATH/src目錄中

  • gopath的另一個(gè)功能是明確package的導(dǎo)入位置。前文我們介紹過(guò),go代碼通過(guò)package進(jìn)行組織,在helloworl程序中,我們導(dǎo)入了go語(yǔ)言內(nèi)置的fmt package.當(dāng)我們要導(dǎo)入第三方時(shí)應(yīng)該怎么做呢?其實(shí)如果我們?cè)陧?xiàng)目中導(dǎo)入了一個(gè)第三方包,例如

import "blue/red"

實(shí)際引用的是$GOPATH/src/blue/red 文件中的代碼。

同理,如果導(dǎo)入為

import "github.com/gobuffalo/buffalo"

實(shí)際引用的是$GOPATH/src/github.com/gobuffalo/buffalo 文件中的代碼。

  • 首先在$GOPATH/src中新建一個(gè)文件夾mymath,在文件夾中新建一個(gè)文件add.go

? mkdir mymath
? cd mymath
? touch add.go

add.go的內(nèi)容如下,要注意導(dǎo)出的函數(shù)必須是首字母大寫(xiě)的,這是go語(yǔ)言的規(guī)則。

package mymath

func Add(a int, b int) int {
    return a + b
}

接著在$GOPATH/src中創(chuàng)建一個(gè)main.go文件,即可以完整的調(diào)用mymath包中的add函數(shù)。

package main

import (
    "fmt"
    "mymath"
)

func main() {
    result := mymath.Add(1, 2)
    fmt.Println("result:", result)
}
  • 通過(guò)go run main.go 即可運(yùn)行輸出1+2的結(jié)果3

  • 相比于其他語(yǔ)言繁瑣的配置,go語(yǔ)言中的工作空間gopath配置相對(duì)簡(jiǎn)單,容易理解

  • 在go1.13之后,go官方已經(jīng)開(kāi)始全面擁抱go module.

  • 關(guān)于gopath就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:golang中g(shù)opath的介紹-創(chuàng)新互聯(lián)
本文來(lái)源:http://muchs.cn/article48/coeghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、Google、軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站改版、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)