37.筆記go語言——包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

37.筆記go語言——包

包是函數和資料的集合。用package保留字定義一個包。檔案名稱不需要與包名一致。包名的約定是使用小寫字元。Go包可以由多個檔案組成,但是使用相同的package <name>這一行。讓我們在檔案even.go中定義一個叫做even的包。

名稱以大寫字母起始的是可匯出的,可以在包的外部調用.

在Go中,當函數的首字母大寫的時候,函數會被從包中匯出(在包外部可見,或者說公有的)

概括來說:

•公有函數的名字以大寫字母開頭;

•私人函數的名字以小寫字母開頭。

這個規則同樣適用於定義在包中的其他名字(新類型、全域變數)。注意,“大寫”的含義並不僅限於US ASCII,它被擴充到了整個Unicode範圍。所以大寫的希臘語、古埃及語都是可以的。

標識符

像在其他語言中一樣,Go的命名是很重要的。在某些情況下,它們甚至有語義上的作用:例如,在包外是否可見決定於首字母是不是大寫。因此有必要花點時間討論一下Go程式的命名規則。

包名

當包匯入(通過import)時,包名成為了內容的入口。在import "bytes"之後,匯入包的可以調用函數bytes.Buffer。任何使用這個包的人,可以使用同樣的名字訪問到它的內容,因此這樣的包名是好的:短的、簡潔的、好記的。

根據規則,包名是小寫一個單詞;不應當有底線或混合大小寫。由於每個人都可能需要錄入這個名字,所以儘可能的簡短。不要提前考慮衝突。包名是匯入的預設名稱。

在Go中使用混合大小寫MixedCaps或者mixedCaps,而不是底線區分含有多個單詞的名字。

包的文檔

每個包都應該有包注釋,在package前的一個註解區塊。對於多檔案包,包注釋只需要出現在一個檔案前,任意一個檔案都可以。包注釋應當對包進行介紹,並提供相關於包的整體資訊。這會出現在go doc產生的關於包的頁面上,並且相關的細節會一併顯示。

每個定義(並且匯出)的函數應當有一小段文字描述該函數的行為。

測試包

在Go中為包編寫單元測試應當是一種習慣。編寫測試需要包含testing包和程式go test。兩者都有良好的文檔。

在編寫包的時候應當一邊寫代碼,一邊寫(一些)文檔和測試函數。這可以讓你的程式更好,並且它展示了你的努力。

常用的包

標準的Go程式碼程式庫中包含了大量的包,並且在安裝Go的時候多數會伴隨一起安裝。瀏覽$GOROOT/src/pkg目錄並且查看那些包會非常有啟發。

fmt

包fmt實現了格式化的I/O函數,這與C的printf和scanf類似。格式化短語派生於C。一些短語(%-序列)這樣使用:

%v

預設格式的值。當列印結構時,加號(%+v)會增加欄位名;

%#v

Go樣式的值表達;

%T

帶有類型的Go樣式的值表達;

io

這個包提供了原始的I/O操作介面。它主要的任務是對os包這樣的原始的I/O進行封裝,增加一些其他相關,使其具有抽象功能用在公用的介面上。

bufio

這個包實現了緩衝的I/O。它封裝於io.Reader和io.Writer對象,建立了另一個對象(Reader和Writer)在提供緩衝的同時實現了一些文本I/O的功能。

sort

sort包提供了對數組和使用者定義集合的原始的排序功能。

strconv

strconv包提供了將字串轉換成基礎資料型別 (Elementary Data Type),或者從基礎資料型別 (Elementary Data Type)轉換為字串的功能。

os

os包提供了與平台無關的作業系統功能介面。其設計是Unix形式的。

sync

sync包提供了基本的同步原語,例如互斥鎖。

flag

flag包實現了命令列解析。

encoding/json

encoding/json包實現了編碼與解碼RFC 4627 [5]定義的JSON對象。

text/template

資料驅動的模板,用於產生文本輸出,例如HTML。

將模板關聯到某個資料結構上進行解析。模板內容指向資料結構的元素(通常結構的欄位或者map的鍵)控制解析並且決定某個值會被顯示。模板掃描結構以便解析,而“遊標” @決定了當前位置在結構中的值。

net/http

net/http實現了HTTP請求、響應和URL的解析,並且提供了可擴充的HTTP服務和基本的HTTP用戶端。

unsafe

unsafe包包含了Go程式中資料類型上所有不安全的操作。通常無須使用這個。

reflect

reflect包實現了運行時反射,允許程式通過抽象類別型操作對象。通常用於處理靜態類型interface{}的值,並且通過Typeof解析出其動態類型資訊,通常會返回一個有介面類型Type的對象。

os/exec

os/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.