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

Golang常用環(huán)境變量說明與設(shè)置詳解

 更新時間:2020年02月23日 16:13:26   作者:weixin_33895695  
這篇文章主要介紹了Golang常用環(huán)境變量說明與設(shè)置,需要的朋友可以參考下

無論你是使用Windows,Linux還是Mac OS操作系統(tǒng)來開發(fā)Go應(yīng)用程序,在安裝好Go安裝語言開發(fā)工具之后,都必須配置好Go語言開發(fā)所要求的 環(huán)境變量,才算初步完成Go開發(fā)環(huán)境的搭建。

但對于一些初學(xué)者來說,可能不太明白Go語言中常用的環(huán)境變量(Environment variables)的作用以及如何設(shè)置環(huán)境變量,今天我們來講講。

注意:Go提供的Windows操作系統(tǒng)安裝包(.msi后綴)安裝完成后,會自動配置幾個常用的環(huán)境變量。

常用環(huán)境變量

Go語言中可以設(shè)置的環(huán)境變量有很多,每個環(huán)境變量都有其作用,不過很多我們可能都用不到,一般需要了解也是最重要的有以下幾個:

$ go env //打印Go所有默認環(huán)境變量
$ go env GOPATH //打印某個環(huán)境變量的值

GOROOT

環(huán)境變量GOROOT表示Go語言的安裝目錄。

在Windows中,GOROOT的默認值是C:/go,而在Mac OS或Linux中GOROOT的默認值是usr/loca/go,如果將Go安裝在其他目錄中,而需要將GOROOT的值修改為對應(yīng)的目錄。

另外,GOROOT/bin則包含Go為我們提供的工具鏈,因此,應(yīng)該將GOROOT/bin配置到環(huán)境變量PATH中,方便我們在全局中使用Go工具鏈。

Linux設(shè)置GOROOT演示

export GOROOT=~/go
export PATH=$PATH:$GOROOT/bin

GOPATH

注意,GOPATH的值不能與GOROOT相同。

環(huán)境變量GOPATH用于指定我們的開發(fā)工作區(qū)(workspace),是存放源代碼、測試文件、庫靜態(tài)文件、可執(zhí)行文件的工作。

在類Unix(Mac OS或Linux)操作系統(tǒng)中GOPATH的默認值是$home/go。而在Windows中GOPATH的默認值則為%USERPROFILE%\go(比如在Admin用戶,其值為C:\Users\Admin\go)。

當(dāng)然,我們可以通過修改GOPATH來更換工作區(qū),比如將工作設(shè)置opt/go方式如下:

Linux設(shè)置GOPATH演示

export GOPATH=/opt/go

還有,可以在GOPATH中設(shè)置多個工作區(qū),如:

export GOPATH=/opt/go;$home/go

GOPATH的子目錄

上面的代碼表示我們指定兩個工作區(qū),不過當(dāng)我們使用go get命令去獲取遠程庫的時候,一般會安裝到第一個工作區(qū)當(dāng)中。

按照Go開發(fā)規(guī)范,GOPATH目錄下的每個工作一般分為三個子目錄:src,pkg,bin,所以我們看到的每個工作區(qū)是這樣子的:

bin/

    hello                      # 可執(zhí)行文件

    outyet                     # 可執(zhí)行文件

src/

    github.com/golang/example/

        .git/                 

    hello/

        hello.go               # 命令行代碼

    outyet/

        main.go                # 命令行代碼

        main_test.go           # 測試代碼

    stringutil/

        reverse.go             # 庫文件

        reverse_test.go        # 庫文件

    golang.org/x/image/

        .git/                  

    bmp/

        reader.go              # 庫文件

        writer.go              # 庫文件

src目錄放的是我們開發(fā)的源代碼文件,其下面對應(yīng)的目錄稱為包,pkg放的是編譯后的庫靜態(tài)文件,bin放的是源代碼編譯后臺的可執(zhí)行文件。

GOBIN

環(huán)境變量GOBIN表示我們開發(fā)程序編譯后二進制命令的安裝目錄。

當(dāng)我們使用go install命令編譯和打包應(yīng)用程序時,該命令會將編譯后二進制程序打包GOBIN目錄,一般我們將GOBIN設(shè)置為GOPATH/bin目錄。

Linux設(shè)置GOBIN演示

export GOBIN=$GOPATH/bin

上面的代碼中,我們都是使用export命令設(shè)置環(huán)境變量的,這樣設(shè)置只能在當(dāng)前shell中有效,如果想一直有效,如在Linux中,則應(yīng)該將環(huán)境變量添加到/etc/profile等文件當(dāng)中。

交叉編譯

什么是交叉編譯?所謂的交叉編譯,是指在一個平臺上就能生成可以在另一個平臺運行的代碼,例如,我們可以32位的Windows操作系統(tǒng)開發(fā)環(huán)境上,生成可以在64位Linux操作系統(tǒng)上運行的二進制程序。

在其他編程語言中進行交叉編譯可能要借助第三方工具,但在Go語言進行交叉編譯非常簡單,最簡單只需要設(shè)置GOOS和GOARCH這兩個環(huán)境變量就可以了。

GOOS與GOARCH

GOOS的默認值是我們當(dāng)前的操作系統(tǒng), 如果windows,linux,注意mac os操作的上的值是darwin。 GOARCH則表示CPU架構(gòu),如386,amd64,arm等。

獲取GOOS和GOARCH的值

我們可以使用go env命令獲取當(dāng)前GOOS和GOARCH的值。

$ go env GOOS GOARCH

GOOS和GOARCH的取值范圍

GOOS和GOARCH的值成對出現(xiàn),而且只能是下面列表對應(yīng)的值。

$GOOS     $GOARCH

android     arm

darwin     386

darwin     amd64

darwin     arm

darwin     arm64

dragonfly   amd64

freebsd     386

freebsd     amd64

freebsd     arm

linux     386

linux     amd64

linux     arm

linux     arm64

linux     ppc64

linux     ppc64le

linux     mips

linux     mipsle

linux     mips64

linux     mips64le

linux     s390x

netbsd     386

netbsd     amd64

netbsd     arm

openbsd     386

openbsd     amd64

openbsd     arm

plan9     386

plan9     amd64

solaris     amd64

windows     386

windows     amd64

示例

編譯在64位Linux操作系統(tǒng)上運行的目標(biāo)程序

$ GOOS=linux GOARCH=amd64 go build main.go

編譯arm架構(gòu)Android操作上的目標(biāo)程序

$ GOOS=android GOARCH=arm GOARM=7 go build main.go

環(huán)境變量列表

雖然我們一般雖然配置的環(huán)境變量就那么幾個,但其實Go語言是提供了非常多的環(huán)境變量,讓我們可以自由地定制開發(fā)和編譯器行為。

下面是Go提供的所有的環(huán)境變量列表,一般可以劃分為下面幾大類,大概了解一下就可以了,因為有些環(huán)境變量我們可以永遠都不會用到。

通過環(huán)境變量

GCCGO

GOARCH

GOBIN

GOCACHE

GOFLAGS

GOOS

GOPATH

GOPROXY

GORACE

GOROOT

GOTMPDIR

和cgo一起使用的環(huán)境變量

CC

CGO_ENABLED

CGO_CFLAGS

CGO_CFLAGS_ALLOW

CGO_CFLAGS_DISALLOW

CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW

CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW

CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW

CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW

CXX

PKG_CONFIG

AR

與系統(tǒng)架構(gòu)體系相關(guān)的環(huán)境變量

GOARM

GO386

GOMIPS

GOMIPS64

專用的環(huán)境變量

GCCGOTOOLDIR

GOROOT_FINAL

GO_EXTLINK_ENABLED

GIT_ALLOW_PROTOCOL

其他環(huán)境變量

GOEXE

GOHOSTARCH

GOHOSTOS

GOMOD

GOTOOLDIR

小結(jié)

環(huán)境變量的設(shè)置,可以影響我們開發(fā)和編譯項目的過程與結(jié)果,所以還是很有必要了解一下的。

更多關(guān)于Golang常用環(huán)境變量說明與設(shè)置請查看下面的相關(guān)鏈接

相關(guān)文章

  • Go?實戰(zhàn)單隊列到優(yōu)先級隊列實現(xiàn)圖文示例

    Go?實戰(zhàn)單隊列到優(yōu)先級隊列實現(xiàn)圖文示例

    這篇文章主要為大家介紹了Go?實戰(zhàn)單隊列到優(yōu)先級隊列圖文示例實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 一文帶你了解Golang中的WaitGroups

    一文帶你了解Golang中的WaitGroups

    WaitGroups是同步你的goroutines的一種有效方式。這篇文章主要來和大家聊聊Golang中WaitGroups的使用,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • golang中包無法引入問題解決

    golang中包無法引入問題解決

    本文主要介紹了golang中包無法引入問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go語言工程結(jié)構(gòu)

    go語言工程結(jié)構(gòu)

    這篇文章主要簡單介紹了go語言工程結(jié)構(gòu),對于我們學(xué)習(xí)go語言很有幫助,需要的朋友可以參考下
    2015-01-01
  • 基于GORM實現(xiàn)CreateOrUpdate方法詳解

    基于GORM實現(xiàn)CreateOrUpdate方法詳解

    這篇文章主要為大家介紹了基于GORM實現(xiàn)CreateOrUpdate方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 基于Go語言實現(xiàn)選擇排序算法及優(yōu)化

    基于Go語言實現(xiàn)選擇排序算法及優(yōu)化

    選擇排序是一種簡單的比較排序算法.這篇文章將利用Go語言實現(xiàn)冒泡排序算法,文中的示例代碼講解詳細,對學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-12-12
  • Go 切片導(dǎo)致內(nèi)存泄露的幾種原因

    Go 切片導(dǎo)致內(nèi)存泄露的幾種原因

    某些情況下,對一個已存在的切片或數(shù)組進行切分操作可能會導(dǎo)致內(nèi)存泄漏,本文主要介紹了Go 切片導(dǎo)致內(nèi)存泄露的幾種原因,感興趣的可以了解一下
    2023-05-05
  • go寫文件后出現(xiàn)大量NUL字符問題解決

    go寫文件后出現(xiàn)大量NUL字符問題解決

    本文主要介紹了go寫文件后出現(xiàn)大量NUL字符問題解決,由于每次寫的時候設(shè)置的長度都是64,在某次不足64時,byte切片空余位置被填充為空字符,下面就來介紹一下如何解決
    2023-12-12
  • K8s部署發(fā)布Golang應(yīng)用程序的實現(xiàn)方法

    K8s部署發(fā)布Golang應(yīng)用程序的實現(xiàn)方法

    本文主要介紹了K8s部署發(fā)布Golang應(yīng)用程序的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Golang中的自定義函數(shù)類型詳解

    Golang中的自定義函數(shù)類型詳解

    在 Golang 中,type 關(guān)鍵字用于定義自定義類型,函數(shù)也是一種數(shù)據(jù)類型,因此可以使用 type 關(guān)鍵字來定義函數(shù)類型,本文就給大家詳細介紹一下Golang中的自定義函數(shù)類型,需要的朋友可以參考下
    2023-07-07

最新評論

内丘县| 德令哈市| 临朐县| 拜城县| 海盐县| 涞水县| 弋阳县| 尚志市| 马关县| 缙云县| 玛多县| 闽侯县| 营山县| 扎囊县| 扶风县| 东山县| 淅川县| 彭阳县| 剑河县| 平武县| 天峨县| 介休市| 吴旗县| 江陵县| 汽车| 东安县| 辛集市| 凉城县| 建水县| 乐昌市| 江华| 西青区| 罗平县| 姚安县| 汉寿县| 闽侯县| 泸定县| 吴桥县| 洪洞县| 丹棱县| 宁安市|