Golang的工程管理

包管理

包管理是golang大型工程開發的基礎,golang的一個完整的工程應該分爲3個模塊,分別是:

  • src:所有的源代碼,必須自己組織創建
  • pkg:源代碼編譯成的二進制的包,自動生成
  • bin:最終的可執行程序,自動生成。main函數所在的那個文件的包。

golang有兩個路徑,名稱和作用分別是:

  • GOROOT:golang安裝的位置,這是安裝的時候自動添加的,類Unix系統下通過export $GOROOT查看
  • GOPATH:這是需要自己配置的,是當前工程所在的目錄,配置這個路徑的作用是爲了更好的使用go的包管理工具。每次開啓開發的時候,使用export配置。以該項目爲例子,終端輸入export GOPATH=~/code/GoProject && source ~/.bashrc

先給出源代碼結構:

Golang有個特點,每次開發一個包的文件時,最好都寫上測試用例,直接開發測試一起進行;當然,這不是必須的。

每個文件的內容如下:

add.go

package simplemath

func Add(a, b int) int {
    return a + b
}

add_test.go

package simplemath

import "testing"

func TestAdd1(t *testing.T) {
    r := Add(1, 2)
    if r != 3 {
    	t.Errorf("Add(1, 2) failed. Got %d, expected 3", r)
    }
}

sqrt.go

package simplemath

import "math"

func Sqrt(x int) int {
    i := math.Sqrt(float64(x))
    return int(i)
}

sqrt_test.go

package simplemath

import "testing"

func TestSqrt1(t *testing.T) {
    v := Sqrt(16)
    if v != 4 {
        t.Errorf("Sqrt(16) failed. Got %v, expected 4", v)
    }
}

之後轉到src目錄下,執行:

go install simplemath
go install calc.go

最終的代碼結構:

代碼格式化

golang本身對格式化要求就非常嚴格,但是爲了更方便,添加了格式化工具。比如要對simplemath包的源代碼進行格式化,直接執行:

go fmt simplemath

代碼測試

golang的特點是可以寫代碼與測試同時進行,每個文文件名稱後面添加_test表示對應的測試文件。比如上述的add_test.go就是add.go的測試文件。以包爲單位進行測試。比如測試整個simplemath包,轉到src目錄下,執行:

go test simplemath

測試結果輸出:

ok      simplemath      (cached) 

(cached)是之前測試過,第一次測試會出現測試時間。

說明文檔

golang的另一個巨大的優勢在於,可以直接在編碼的時候,集成說明文檔。而且說明文檔可以像官網的文檔那樣規範美觀,並直接在瀏覽器中閱讀。
新建以工程,src新建一個FOO包,然後新建foo.go函數,之後文件中添加:

v// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

/*
這個包用於展示文檔說明。整個文檔的說明必須緊貼着package

換行的話需要另起一行,下面可以添加BUG的說明
*/
package FOO

import "fmt"

// this is a function note
// function print Hello, World!
func foo(){
    fmt.Println("Hello, World!")
}

// BUG(jack): #1: I'm sorry but this code has an issue to be solved.
// BUG(tom): #2: An issue assigned to another person.

然後

go install FOO
go doc FOO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章