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


    最近項目中要用到Go語言,所以簡單總結一下安裝和配置,Go這個語言本身就限定了很多規范,比如項目設置,編程風格等,開發中就不需要再因為各種規范問題糾結了,直接用官方規定的能避免很多坑,下面直接切正題,go一般參考兩個網站,官網和中文網,網址如下:

    官網:https://golang.org

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

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

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

    1. 安裝

    第一步首先下載安裝包,下載地址是: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下,現在只需要最后一步配置環境變量就可以了:

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM