最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言的GOPATH與工作目錄詳解

 更新時(shí)間:2014年10月28日 11:05:08   投稿:junjie  
這篇文章主要介紹了Go語言的GOPATH與工作目錄詳解,本文詳細(xì)講解了GOPATH設(shè)置、應(yīng)用目錄結(jié)構(gòu)、編譯應(yīng)用等內(nèi)容,需要的朋友可以參考下

GOPATH設(shè)置

go 命令依賴一個(gè)重要的環(huán)境變量:$GOPATH1

(注:這個(gè)不是Go安裝目錄。下面以筆者的工作目錄為說明,請(qǐng)?zhí)鎿Q自己機(jī)器上的工作目錄。)

在類似 Unix 環(huán)境大概這樣設(shè)置:

復(fù)制代碼 代碼如下:

    export GOPATH=/home/apple/mygo

為了方便,應(yīng)該把新建以上文件夾,并且把以上一行加入到 .bashrc 或者 .zshrc 或者自己的 sh 的配置文件中。

Windows 設(shè)置如下,新建一個(gè)環(huán)境變量名稱叫做GOPATH:

復(fù)制代碼 代碼如下:

    GOPATH=c:\mygo

GOPATH允許多個(gè)目錄,當(dāng)有多個(gè)目錄時(shí),請(qǐng)注意分隔符,多個(gè)目錄的時(shí)候Windows是分號(hào),Linux系統(tǒng)是冒號(hào),當(dāng)有多個(gè)GOPATH時(shí),默認(rèn)會(huì)將go get的內(nèi)容放在第一個(gè)目錄下

以上 $GOPATH 目錄約定有三個(gè)子目錄:

1.src 存放源代碼(比如:.go .c .h .s等)
2.pkg 編譯后生成的文件(比如:.a)
3.bin 編譯后生成的可執(zhí)行文件(為了方便,可以把此目錄加入到 $PATH 變量中,如果有多個(gè)gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目錄)

以后我所有的例子都是以mygo作為我的gopath目錄

應(yīng)用目錄結(jié)構(gòu)

建立包和目錄:$GOPATH/src/mymath/sqrt.go(包名:"mymath")

以后自己新建應(yīng)用或者一個(gè)代碼包都是在src目錄下新建一個(gè)文件夾,文件夾名稱一般是代碼包名稱,當(dāng)然也允許多級(jí)目錄,例如在src下面新建了目錄$GOPATH/src/github.com/astaxie/beedb 那么這個(gè)包路徑就是“github.com/astaxie/beedb”,包名稱是最后一個(gè)目錄beedb

執(zhí)行如下代碼:

復(fù)制代碼 代碼如下:

cd $GOPATH/src
    mkdir mymath

新建文件sqrt.go,內(nèi)容如下:

復(fù)制代碼 代碼如下:

 // $GOPATH/src/mymath/sqrt.go源碼如下:
    package mymath

    func Sqrt(x float64) float64 {
        z := 0.0
        for i := 0; i < 1000; i++ {
            z -= (z*z - x) / (2 * x)
        }
        return z
    }

這樣我的應(yīng)用包目錄和代碼已經(jīng)新建完畢,注意:一般建議package的名稱和目錄名保持一致

編譯應(yīng)用

上面我們已經(jīng)建立了自己的應(yīng)用包,如何進(jìn)行編譯安裝呢?有兩種方式可以進(jìn)行安裝

1、只要進(jìn)入對(duì)應(yīng)的應(yīng)用包目錄,然后執(zhí)行g(shù)o install,就可以安裝了
2、在任意的目錄執(zhí)行如下代碼go install mymath

安裝完之后,我們可以進(jìn)入如下目錄:

復(fù)制代碼 代碼如下:

 cd $GOPATH/pkg/${GOOS}_${GOARCH}
    //可以看到如下文件
    mymath.a

這個(gè).a文件是應(yīng)用包,那么我們?nèi)绾芜M(jìn)行調(diào)用呢?

接下來我們新建一個(gè)應(yīng)用程序來調(diào)用

新建應(yīng)用包mathapp:

復(fù)制代碼 代碼如下:

 cd $GOPATH/src
    mkdir mathapp
    cd mathapp
    vim main.go

// $GOPATH/src/mathapp/main.go源碼:

復(fù)制代碼 代碼如下:

    package main

    import (
          "mymath"
          "fmt"
    )

    func main() {
          fmt.Printf("Hello, world.  Sqrt(2) = %v\n", mymath.Sqrt(2))
    }

如何編譯程序呢?進(jìn)入該應(yīng)用目錄,然后執(zhí)行g(shù)o build,那么在該目錄下面會(huì)生成一個(gè)mathapp的可執(zhí)行文件

復(fù)制代碼 代碼如下:

    ./mathapp

輸出如下內(nèi)容

復(fù)制代碼 代碼如下:

    Hello, world.  Sqrt(2) = 1.414213562373095

如何安裝該應(yīng)用,進(jìn)入該目錄執(zhí)行g(shù)o install,那么在$GOPATH/bin/下增加了一個(gè)可執(zhí)行文件mathapp,這樣可以在命令行輸入如下命令就可以執(zhí)行

復(fù)制代碼 代碼如下:

mathapp

也是輸出如下內(nèi)容

復(fù)制代碼 代碼如下:

Hello, world.  Sqrt(2) = 1.414213562373095

獲取遠(yuǎn)程包

go語言有一個(gè)獲取遠(yuǎn)程包的工具就是go get,目前go get支持多數(shù)開源社區(qū)(例如:github、googlecode、bitbucket、Launchpad)

復(fù)制代碼 代碼如下:

go get github.com/astaxie/beedb

go get -u 參數(shù)可以自動(dòng)更新包,而且當(dāng)go get的時(shí)候會(huì)自動(dòng)獲取該包依賴的其他第三方包
通過這個(gè)命令可以獲取相應(yīng)的源碼,對(duì)應(yīng)的開源平臺(tái)采用不同的源碼控制工具,例如github采用git、googlecode采用hg,所以要想獲取這些源碼,必須先安裝相應(yīng)的源碼控制工具

通過上面獲取的代碼在我們本地的源碼相應(yīng)的代碼結(jié)構(gòu)如下:

復(fù)制代碼 代碼如下:

$GOPATH
  src
   |--github.com
          |-astaxie
              |-beedb
   pkg
    |--相應(yīng)平臺(tái)
         |-github.com
               |--astaxie
                    |beedb.a

go get本質(zhì)上可以理解為首先第一步是通過源碼工具clone代碼到src下面,然后執(zhí)行g(shù)o install

在代碼中如何使用遠(yuǎn)程包,很簡(jiǎn)單的就是和使用本地包一樣,只要在開頭import相應(yīng)的路徑就可以

復(fù)制代碼 代碼如下:

import "github.com/astaxie/beedb"

程序的整體結(jié)構(gòu)

通過上面建立的我本地的mygo的目錄結(jié)構(gòu)如下所示

復(fù)制代碼 代碼如下:

bin/
    mathapp
pkg/
    平臺(tái)名/ 如:darwin_amd64、linux_amd64
         mymath.a
         github.com/
              astaxie/
                   beedb.a
src/
    mathapp
          main.go
      mymath/
          sqrt.go
      github.com/
           astaxie/
                beedb/
                    beedb.go
                    util.go

從上面的結(jié)構(gòu)我們可以很清晰的看到,bin目錄下面存的是編譯之后可執(zhí)行的文件,pkg下面存放的是函數(shù)包,src下面保存的是應(yīng)用源代碼。

[1] Windows系統(tǒng)中環(huán)境變量的形式為%GOPATH%,本書主要使用Unix形式,Windows用戶請(qǐng)自行替換。

相關(guān)文章

  • 使用Go語言進(jìn)行條件編譯的示例代碼

    使用Go語言進(jìn)行條件編譯的示例代碼

    Go的條件編譯主要通過構(gòu)建標(biāo)簽(build?tags)和構(gòu)建約束(build?constraints)來實(shí)現(xiàn),這些標(biāo)簽和約束可以讓我們針對(duì)不同的操作系統(tǒng)、架構(gòu)或特定條件編寫特定代碼,本文給大家介紹了如何使用Go語言進(jìn)行條件編譯,需要的朋友可以參考下
    2024-06-06
  • Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別

    這篇文章主要給大家介紹了關(guān)于Golang定時(shí)器的2種實(shí)現(xiàn)方法與區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Go語言封裝HTTP請(qǐng)求的Curl工具包詳解

    Go語言封裝HTTP請(qǐng)求的Curl工具包詳解

    在 Go 語言開發(fā)中,與 HTTP 服務(wù)進(jìn)行交互是非常常見的需求,本文將分享一個(gè)用 Go 語言封裝的 Curl 工具包,它提供了簡(jiǎn)潔易用的接口來進(jìn)行 HTTP 請(qǐng)求,需要的可以了解下
    2025-03-03
  • Go語言中的復(fù)合類型詳細(xì)介紹

    Go語言中的復(fù)合類型詳細(xì)介紹

    這篇文章主要介紹了Go語言中的復(fù)合類型詳細(xì)介紹,復(fù)合類型包括:結(jié)構(gòu)體、數(shù)組、切片、Maps,需要的朋友可以參考下
    2014-10-10
  • 詳解go語言判斷管道是否關(guān)閉的常見誤區(qū)

    詳解go語言判斷管道是否關(guān)閉的常見誤區(qū)

    這篇文章主要想和大家一起探討一下在Go語言中,我們是否可以使用讀取管道時(shí)的第二個(gè)返回值來判斷管道是否關(guān)閉,文中的示例代碼講解詳細(xì),有興趣的可以了解下
    2023-10-10
  • golang中set數(shù)據(jù)結(jié)構(gòu)的使用示例

    golang中set數(shù)據(jù)結(jié)構(gòu)的使用示例

    本文主要介紹了golang中set數(shù)據(jù)結(jié)構(gòu)的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言泛型打造優(yōu)雅的切片工具庫(kù)

    Go語言泛型打造優(yōu)雅的切片工具庫(kù)

    泛型是一種編程范式,允許開發(fā)者在編寫代碼時(shí)定義通用的類型參數(shù),而不是具體的類型,本文將使用泛型實(shí)現(xiàn)打造優(yōu)雅的切片工具庫(kù),希望對(duì)大家有所幫助
    2025-02-02
  • 淺談Go語言的空標(biāo)示符

    淺談Go語言的空標(biāo)示符

    本文通過文字及實(shí)例介紹了Go語言的空標(biāo)示符,對(duì)此有不明白的朋友可以參考學(xué)習(xí),下面一起來看看吧。
    2016-08-08
  • 詳解Go語言設(shè)計(jì)模式之單例模式

    詳解Go語言設(shè)計(jì)模式之單例模式

    單例模式很容易記住。就像名稱一樣,它只能提供對(duì)象的單一實(shí)例,保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問該實(shí)例的方法。本文就來聊聊Go語言中的單例模式,感興趣的小伙伴可以了解一下
    2022-10-10
  • go語言讀取json并下載高清妹子圖片

    go語言讀取json并下載高清妹子圖片

    前面我們介紹了使用python下載高清妹子圖,作為程序猿,我們當(dāng)然不能只會(huì)一種語言,今天我們就來使用go語言來讀取API來下載妹子圖吧,有需要的宅男們可以參考下。
    2015-03-03

最新評(píng)論

宁安市| 晴隆县| 怀远县| 麟游县| 景洪市| 犍为县| 合水县| 平和县| 山东省| 长春市| 白山市| 西盟| 察雅县| 罗定市| 县级市| 浙江省| 通榆县| 麟游县| 铜梁县| 克东县| 永新县| 南乐县| 乌鲁木齐县| 遵义县| 永吉县| 安多县| 额尔古纳市| 西和县| 呼和浩特市| 临潭县| 井冈山市| 陇西县| 嘉峪关市| 德保县| 伊川县| 太保市| 双鸭山市| 襄樊市| 噶尔县| 榆林市| 澜沧|