一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Golang中的GOPATH變量如何設(shè)置

 java_laq小館 2013-09-26

1.2 GOPATH與工作空間

GOPATH設(shè)置

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

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

GOPATH=/home/apple/mygo

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

GOPATH=c:/mygo

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

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

  • src 存放源代碼(比如:.go .c .h .s等)
  • pkg 編譯后生成的文件(比如:.a)
  • bin 編譯后生成的可執(zhí)行文件(為了方便,可以把此目錄加入到 $PATH 變量中)

以后我所有的例子都是以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”

執(zhí)行如下代碼

cd $GOPATH/src
mkdir mymath

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

// $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í)行go install,就可以安裝了

2、在任意的目錄執(zhí)行如下代碼go install mymath

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

cd $GOPATH/pkg/平臺(tái)名/mymath.a

這個(gè).a文件是應(yīng)用包,相當(dāng)于一個(gè)函數(shù)庫一樣,那么我們?nèi)绾芜M(jìn)行調(diào)用呢?

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

新建應(yīng)用包mathapp

cd $GOPATH/src
mkdir mathapp
vim main.go

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

package main

import (
    "mymath"
    "fmt"
)

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

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

./mathapp

輸出如下內(nèi)容

Hello, world.  Sqrt(2) = 1.414213562373095

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

mathapp

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

Hello, world.  Sqrt(2) = 1.414213562373095      

獲取遠(yuǎn)程包

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

go get github.com/astaxie/beedb

通過這個(gè)命令可以獲取相應(yīng)的源碼,對(duì)應(yīng)的開源平臺(tái)采用不同的源碼控制工具,例如github采用git、googlecode采用hg,所以要想獲取這些源碼,必須先安裝相應(yīng)的源碼控制工具

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

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

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

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

import "github.com/astaxie/beedb"                                       

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

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

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)用源代碼

links

LastModified

  • $Id$

參考:

https://github.com/ikbear/build-web-application-with-golang/blob/master/1.2.md

https://github.com/astaxie/build-web-application-with-golang/commit/dc05aa3371f4aabf7f7bac1e57d7f917ef1328ae

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    国产又粗又猛又黄又爽视频免费| 色综合久久中文综合网| 欧美日韩精品一区免费| 黄色片一区二区在线观看| 欧美日韩国产成人高潮| 久久国产青偷人人妻潘金莲| 欧美国产亚洲一区二区三区| 白白操白白在线免费观看| 国产精品香蕉在线的人| 久草国产精品一区二区| 国产又色又爽又黄又免费| 欧美亚洲三级视频在线观看| 91精品视频免费播放| 亚洲高清亚洲欧美一区二区| 欧洲偷拍视频中文字幕| 亚洲一区二区精品久久av| 日本亚洲精品在线观看| 九九热在线视频精品免费| 91人妻人澡人人爽人人精品| 日韩毛片视频免费观看| 五月婷婷欧美中文字幕| 日韩欧美国产亚洲一区| 国产精品一区日韩欧美| 亚洲专区中文字幕在线| 欧美人妻少妇精品久久性色| 日韩精品区欧美在线一区 | 亚洲日本久久国产精品久久| 麻豆在线观看一区二区| 91天堂免费在线观看| 亚洲国产精品肉丝袜久久| 亚洲视频在线观看你懂的| 日本免费一区二区三女| 日本午夜免费福利视频| 亚洲欧洲日韩综合二区| 国产精品欧美激情在线播放| 亚洲一区二区三区三州| 丰满人妻熟妇乱又乱精品古代| 亚洲中文字幕视频在线播放| 国产老熟女超碰一区二区三区| 国产日产欧美精品视频| 欧洲自拍偷拍一区二区|