linux go環境安裝和基本項目結構

    最近項目中要用到Go語言,因此簡單總結一下安裝和配置,Go這個語言自己就限定了不少規範,好比項目設置,編程風格等,開發中就不須要再由於各類規範問題糾結了,直接用官方規定的能避免不少坑,下面直接切正題,go通常參考兩個網站,官網和中文網,網址以下:html

    官網:https://golang.orglinux

    中文網:https://studygolang.com/c++

    中文文檔:https://go-zh.org/doc/git

    另外其實中文網的更新目前也是比較快的github

    1. 安裝golang

    第一步首先下載安裝包,下載地址是:https://golang.org/dl/,或者中文網地址:https://studygolang.com/dl,比較了一下兩個go最新版本都是同樣的,目前是1.10.3,根據本身的計算機系統下載對應的版本,我這裏是linux 64位,因此下載go1.10.3.linux-amd64.tar.gz這個包,下載以後能夠解壓安裝:編程

tar -xvzf go1.10.3.linux-amd64.tar.gz

    解壓以後直接當前目錄下會有一個go目錄,直接執行 mv go /usr/local ,這樣就將go安裝到的/usr/local/go下,如今只須要最後一步配置環境變量就能夠了:bash

export PATH=$PATH:/usr/local/go/bin

    能夠加到/etc/profile或者~/.bash_profile而後source便可,如今執行 go version 查看版本號以下:函數

    

    如今go就完全安裝成功了,另外注意官方假定go安裝在/usr/local/go下,若是想安裝到其餘目錄也是能夠的,好比/abc/go,可是必定要配置GOROOT環境變量,以下:學習

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

    這樣go也能夠安裝成功,若是是默認的目錄,則不須要設置GOROOT

    2. hello world

    第一步先寫一個最簡單的hello world程序,在任意目錄下新建hello.go,內容以下:

package main

import "fmt"

func main() {
    fmt.Printf("hello world\n")
}

     而後保存以後執行 go run hello.go 就能夠直接執行了,或者先執行編譯 go build hello.go 而後生成hello可執行文件,就和c/c++編譯同樣,無需安裝go環境便可執行:

    

    3. 項目結構

    上面只是go最簡單的示例代碼,可是在實際開發中會包含大量的項目封裝和第三方模塊,就須要設置項目結構進行管理,固然這個go已經規定好了,下面和文檔上寫的同樣一步一步創建一個簡單的項目,

    首先創建工做目錄: mkdir /root/go_work ,而後配置GOPATH環境變量,這也是開發go惟一須要配置的環境變量,以下:

export GOPATH=/root/go_work
export PATH=$PATH:$GOPATH/bin

    而後進入/root/go_work,項目目錄下面通常須要3個目錄:bin, pkg, src,看意思懂了一大半,待會會詳細說到.

    如今項目下面是空的,手動創建源碼目錄 mkdir src ,而後在下面繼續創建用戶庫目錄:

mkdir -p github.com/user
mkdir github.com/user/hello

    大部分第三方庫都是經過github下載的,因此第三方源碼目錄通常是github,而後將剛纔寫的hello.go移動到github.com/user/hello中,如今能夠執行安裝命令: go install github.com/user/hello 注意是在任何目錄均可以執行這個命令,由於go會自動去GOPATH下的源碼目錄中尋找,會把對應的目錄下全部的源代碼都進行編譯,執行完成沒有任何輸出表示成功,而後回到go_work下會看到生成了bin目錄,這裏面的就是編譯好的可執行文件.

    而後嘗試編寫一個第三方模塊,實現字符串反轉,執行 mkdir github.com/user/string_util 而後新建文件reverse.go,代碼以下:

package string_util

func Reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r) - 1; i < len(r)/2; i, j = i + 1, j - 1 {
        r[i], r[j] = r[j], r[i]
    }
    return string(r)
}

    而後保存,執行安裝 go install github.com/user/string_util ,其實在執行前能夠先執行 go build github.com/user/string_util 沒有報錯說明成功,可是不會生成任何文件,而後再執行install,如今看到go_work目錄下會多出pkg目錄,這個目錄就是第三方的庫,也就是不含有main函數的代碼都會編譯到這裏面;而後編寫主調函數調用這個封裝的函數,在源碼目錄下新建call目錄,而後編寫util_call.go,代碼以下:

package main
import (
    "fmt"
    "github.com/user/string_util"
)

func main() {
    fmt.Printf(string_util.Reverse("\n!oG, olleH"))
}

    而後保存執行安裝 go install call 或者在代碼所在目錄直接執行 go install 都可,這時候在bin目錄下就會生成call可執行文件,執行以下:

    

    如今咱們對go的項目結構就基本上了解清楚了,而後咱們整體看一下項目結構:

     

    這和網上教程寫的是基本同樣的

    總結:

    1. go的開發環境僅依賴GOPATH環境變量和go安裝目錄下的系統包.

    2. go的全部源碼應該在src下按照目錄結構存放,按照標準的安裝方式編譯項目.

    3. 全部包含main函數的源代碼,頭部package都應該爲main,其他的模塊好比github.com/user/stringutil下面的源碼頭部應該爲package stringutil,即取目錄結構的最後一層.

    上面就是go的基本環境安裝和開發配置,繼續入門或進階能夠參考如下連接:

    1. Go語言之旅,在線學習:https://tour.go-zh.org/

    2. 語言規範:https://go-zh.org/ref/spec

    3. 實效Go編程:https://go-zh.org/doc/effective_go.html

    最後就是總的文檔,多多閱讀.

相關文章
相關標籤/搜索