Go語言學習筆記---包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。包是函數和資料的集合。用package 保留字定義一個包。檔案名稱不需要與包名一致。包名的約定是使用小寫字元。Go 包可以由多個檔案組成,但是使用相同的package <name> 這一行。
import匯入包
1、相對路徑    例:import “./model” //當前檔案同一目錄的model目錄,但是不建議這種方式來import2、絕對路徑    例:import “shorturl/model” //載入gopath/src/shorturl/model模組3、點操作    例:
    package main    import . "fmt"    func main(){        dd := 101        Printf("%d", dd)//因為上面用的點操作匯入的包,所以現在就不需要前面加包名,即 fmt.Printf()    }    輸出結果:    1014、別名操作    例:
    package main    import f "fmt"    func main(){        dd := 101        f.Printf("%d", dd)//因為上面將fmt包起了個別名f,用fmt.Printf()就會報錯    }5、 _操作    例:
    import(
        "database/sql"
        _ "github.com/ziutek/mymysql/godrv"
    )_操作其實是引入該包,而不直接使用包裡面的函數,而是調用了該包裡面的init函數
定義個even包例:even.go    package even              // 開始自訂的包    func Even(i int) bool {   // 可匯出函數(函數名首字母大寫)        return i % 2 == 0    }    func odd(i int) bool {    // 私人函數(函數名首字母小寫)        return i % 2 == 1    }
cd ~vi .bashrc在最後加入 export GOPATH=$HOME/g 儲存退出 GOPATH的路徑可自己定義source .bashrc     //使剛配置的GOPATH生效 mkdir -p $GOPATH/src/even將上述的even.go檔案放入$GOPATH/src/even 注意: 檔案夾even的名字要和even.go檔案中package <name>中name的名字相同。even.go檔案名稱可以隨意
包的函數命名方式:    公有函數的名字以大寫字母開頭;    私人函數的名字以小寫字幕開頭。
在myeven.go檔案中使用定義的even包例:myeven.go    package main    import (        "fmt"
        "even"
    )    func main(){        i := 5
        fmt.Printf("Is %d even? %v\n", i , even.Even(i))
    }輸出結果:Is 5 even? false
包測試在包放置的目錄下(如  $GOPATH/src/even)建立一個*_test.go檔案
func (t *T) Fail()Fail 標記測試函數失敗,但仍然繼續執行。
func (t *T) FailNow()FailNow 標記測試函數失敗,並且中斷其執行。這將會執行下一個測試。因此,當前檔案的其他所有測試都被跳過。
func (t *T) Log(args ...interface{})Log 用預設格式對其參數進行格式化,與Print() 類似,並且記錄文本到錯誤記錄檔。
func (t *T) Fatal(args ...interface{})Fatal 等價於Log() 後跟隨FailNow()。將這些湊到一起,就可以編寫測試了。首先,選擇名字even_test.go。然後添加下面的內容:
package evenimport "testing"func TestEven(t *testing.T) {    if ! Even(2) {        t.Log("2 should be even!")        t.Fail()    }}
注意在第一行使用了package even,測試使用與被測試的包使用相同的名字空間在包目錄中執行 go test 即可
ok even 0.001s
測試執行並且報告ok。成功了!
常用的包標準的Go 程式碼程式庫中包含了大量的包,在$GOROOT/src/pkg目錄中
1、fmt包包fmt 實現了格式化的I/O 函數,這與C 的printf 和scanf 類似。格式化短語派生於C 。一些短語(%-序列)如這樣使用:%v預設格式的值。當列印結構時,加號(%+v)會增加欄位名;%#vGo 樣式的值表達;%T帶有類型的Go 樣式的值表達;返回變數的類型
2、io這個包提供了原始的I/O 操作介面。它主要的任務是對os 包這樣的原始的I/O 進行封裝,增加一些其他相關,使其具有抽象功能用在公用的介面上。
3、bufio這個包實現了緩衝的I/O。它封裝於io.Reader 和io.Writer 對象,建立了另一個對象(Reader 和Writer)在提供緩衝的同時實現了一些文本I/O 的功能。
4、sortsort 包提供了對數組和使用者定義集合的原始的排序功能。
5、strconvstrconv 包提供了將字串轉換成基礎資料型別 (Elementary Data Type),或者從基礎資料型別 (Elementary Data Type)轉換為字串的功能。
6、osos 包提供了與平台無關的作業系統功能介面。其設計是Unix 形式的。
7、syncsync 包提供了基本的同步原語,例如互斥鎖。
8、flagflag 包實現了命令列解析。
9、encoding/jsonencoding/json 包實現了編碼與解碼RFC 4627 [6] 定義的JSON 對象。
10、text/template資料驅動的模板,用於產生文本輸出,例如HTML。將模板關聯到某個資料結構上進行解析。模板內容指向資料結構的元素(通常結構的欄位或者map 的鍵)控制解析並且決定某個值會被顯示。模板掃描結構以便解析,而“遊標” @ 決定了當前位置在結構中的值。
11、net/httpnet/http 實現了HTTP 要求、響應和URL 的解析,並且提供了可擴充的HTTP 服務和基本的HTTP 用戶端。
12、unsafeunsafe 包包含了Go 程式中資料類型上所有不安全的操作。通常無須使用這個。
13、reflectreflect 包實現了運行時反射,允許程式通過抽象類別型操作對象。通常用於處理靜態類型interface{} 的值,並且通過Typeof 解析出其動態類型資訊,通常會返回一個有介面類型Type 的對象。
14、os/execos/exec 包執行外部命令。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.