Go?Go!(四) Go command的使用

來源:互聯網
上載者:User

本篇文檔應該是第一篇文檔的補充,筆者還還不是特別瞭解Go的使用的時候就盲目的去做安裝和學習,絕對是一個失敗的案例。。。

對於一般情況,使用Go只需要安裝Go即可,不需要gccgo的安裝,那個真的很慢,而且有一個最大的問題是沒有go的支援。

go是一個有點強大的工具,可以安裝包,測試包,從網上下載並安裝包,還有一些附帶的小工具,objdump什麼的,都很好用。

對於go的使用,可以參照文檔:http://golang.org/doc/code.html

在這裡就不再翻譯了,強調一下go test的使用即可。這個真心強大。

Testing

Go has a lightweight test framework composed of the go test command and the testing package.

You write a test by creating a file with a name ending in _test.gothat contains functions named TestXXX with signaturefunc
(t *testing.T)
. The test framework runs each such function; if the function calls a failure function such as t.Error ort.Fail,
the test is considered to have failed.

寫好一個code檔案之後,以檔案名稱+_test.go作為尾碼,在test的檔案中,包含需要測試的包的名字,匯入測試的包。並且按照Test+FunctionName的命名方式命名測試函數。該函數的參數為 t *testing.T。 

Add a test to the newmath package by creating the file $GOPATH/src/example/newmath/sqrt_test.go containing the following Go code.

package newmathimport "testing"func TestSqrt(t *testing.T) {const in, out = 4, 2if x := Sqrt(in); x != out {t.Errorf("Sqrt(%v) = %v, want %v", in, x, out)        }}

Now run the test with go test:

$ go test example/newmathok  example/newmath 0.165s

Run go help test and see thetesting
package documentation for more detail.

這樣一鍵式測試的功能真的很不錯,能夠保證每一個file,每一個函數的正確性(不從包中匯出的函數無法測試?待確定)。

經過測試,私人函數也是可以測試的:

測試代碼如下:

package newmath                                                                                                                              import "testing"func TestSqrt(t *testing.T) {    const in, out = 4, 2    if x := Sqrt(in); x != out {        t.Errorf("Sqrt(%v) = %v, want %v", in, x, out)    }   }func TestprivateSqrt(t *testing.T){    const in, out = 4, 2    if x := Sqrt(in); x != out {        t.Errorf("Sqrt(%v) = %v, want %v", in, x, out)    }   }

包的代碼如下:

package newmath// Sqrt returns an approximation to the square root of x.func Sqrt(x float64) float64 {    return privateSqrt(x);                                                                                                                   }func privateSqrt(x float64) float64{    // This is a terrible implementation.    // Real code should import "math" and use math.Sqrt.    z := 0.0    for i := 0; i < 1000; i++ {       z -= (z*z - x) / (2 * x)    }    return z}

要養成良好的習慣,保證每一個檔案都有良好的測試。

Go Go Go

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.