linux下搭建go開發環境及工程目錄管理

實驗環境

centos7.5
go1.11.5

安裝

yum install -y go

環境變量

  • GOROOT:Go安裝目錄;
  • GOPATH:工作目錄,其下包含src、pkg和 bin,分別用來存放源碼文件、編譯過程中的中間文件、編譯后生成的可執行文件;
1,查看Go環境變量配置;
[root@ ~ ] # go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 \
    -fdebug-prefix-map=/tmp/go-build037505318=/tmp/go-build -gno-record-gcc-switches"
2,包搜索路徑

Go在引用其他包時,搜索路徑的先后順序如下(只要搜索到,后面的不再搜索):

  • 搜索當前目錄下的vender目錄;
  • 搜索上一級目錄下的vender目錄,直到$GOPATH/src目錄;
  • 搜索$GOPATH/src目錄;
  • 搜索$GOROOT/src目錄;

看一個編譯時找不到包的具體問題,能明顯的看出其包搜索順序:

[root@VM /data/goroot/src/github.com/elastic/beats/heartbeat]# make
go build -i -ldflags "-X github.com/elastic/beats/libbeat/version.buildTime=......."
../libbeat/dashboards/importer.go:21:2: cannot find package "archive/zip" in any of:
    /data/goroot/src/github.com/elastic/beats/vendor/archive/zip (vendor tree)
    /data/goroot/src/archive/zip (from $GOROOT)
    /root/go/src/archive/zip (from $GOPATH)
3,配置GOPATH

一般在實際使用開發項目時,我們一個會創建一個個人的Go項目路徑來存放項目代碼,把個人項目路徑添加到GOPATH:

export GOPATH=$GOPATH:/data/goroot
上述命令只能保證回話中生效,為了永久保存,可以在/etc/profile文件修改。

helloworld 第一個Go程序

編寫源碼helloworld.go(常用的Go語言開發工具:Jetbrains goland):

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

編譯helloworld:

[root@ ~ ] # go build helloworld.go
[root@ ~ ] # ls
helloworld helloworld.go

運行helloworld:

[root@ ~ ] # ./helloworld
Hello World!

常見的Go目錄結構

WorkSpace     // WorkSpace為GOPATH目錄
  -- bin
     -- App1  // 編譯生成
     -- App2  // 編譯生成
  -- pkg
  -- src
     -- common 1
     -- common 2
     -- utils ...
     -- App1     // project1
        -- models
        -- controllers
        -- others
        -- main.go 
     -- App2     // project2
        -- models
        -- controllers
        -- others
        -- main.go 

如發現文中有錯誤,望留言指明,萬分感激;
如對此文章內容感興趣,想進一步探討,可以留言交流;
如想轉發此文章,請留言協商一下,切勿不指明出處的轉發,尊重原創;
如閱讀過程中有收獲,并想感謝一下,歡迎打賞;
----小林幫

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 申金鑫 17101223365 轉載自公眾號flysnow_org 【嵌牛導讀】:本文介紹了各種系統下的Go語言環...
    Felixxin閱讀 3,402評論 0 20
  • 歡迎掃碼關注公眾號flysnow_org,第一時間看后續文章。覺得有幫助的話,順手分享到朋友圈吧,感謝支持。 前段...
    飛雪無情flysnow_org閱讀 33,222評論 4 45
  • Golang開發環境搭建 首先學習一門開發語言首先先要搭建開發環境,有了環境我們才能進行代碼的開發,先介紹在一些主...
    碼墨閱讀 37,129評論 1 12
  • 李光耀先生的傳奇一生讓我備受鼓舞和感動,作為一個國家的最高領導人能夠為人民鞠躬盡瘁,真心實意地為人民做事情,著實令...
    盛鳴遠揚閱讀 1,990評論 2 2
  • 今天學習《兒童行為的塑造與矯正》381-400頁,首先學習了后向連鎖反應有效應用的要點,包括:1.確定目標行為。2...
    楊園園1987閱讀 250評論 0 0