回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,22 +1,22 @@
## 10.6. 包和命名
在本中,我們將提供一些關於Go語言獨特的包和成命名的定。
在本中,我们将提供一些关于Go语言独特的包和成命名的定。
當創建一包,一般要用短小的包名,但也不能太短導致難以理解。標準庫中最常用的包有bufio、bytes、flag、fmt、http、io、json、os、sort、sync和time等包。
当创建一包,一般要用短小的包名,但也不能太短导致难以理解。标准库中最常用的包有bufio、bytes、flag、fmt、http、io、json、os、sort、sync和time等包。
的名字都簡潔明了。例如,不要將一個類似imageutil或ioutilis的通用包命名util然它看起很短小。要量避免包名使用可能被常用局部量的名字,這樣可能致用重命名入包例如前面看到的path包。
的名字都简洁明了。例如,不要将一个类似imageutil或ioutilis的通用包命名util然它看起很短小。要量避免包名使用可能被常用局部量的名字,这样可能致用重命名入包例如前面看到的path包。
包名一般采用單數的形式。標準庫的bytes、errors和strings使用了複數形式,這是爲了避免和預定義的類型衝突,同樣還有go/types是了避免和type關鍵字衝突。
包名一般采用单数的形式。标准库的bytes、errors和strings使用了复数形式,这是为了避免和预定义的类型冲突,同样还有go/types是了避免和type关键字冲突。
要避免包名有其它的含。例如2.5中我們的溫度轉換包最初使用了temp包名雖然併沒有持多久。但是一糟糕的嚐試,因temp乎是臨時變量的同義詞。然後我們有一段時間使用了temperature作包名,然名字併沒有表包的眞實用途。最後我們改成了和strconv標準包類似的tempconv包名這個名字比之前的就好多了。
要避免包名有其它的含。例如2.5中我们的温度转换包最初使用了temp包名虽然并没有持多久。但是一糟糕的尝试,因temp乎是临时变量的同义词。然后我们有一段时间使用了temperature作包名,然名字并没有表包的真实用途。最后我们改成了和strconv标准包类似的tempconv包名这个名字比之前的就好多了。
現在讓我們看看如何命名包的成。由是通包的入名字引入包里面的成例如fmt.Println包含了包名和成名信息。因此,我一般不需要關註Println的具體內容,因fmt包名已包含了這個信息。當設計一個包的候,需要考包名和成員名兩個部分如何很好地配合。下面有一些例子:
现在让我们看看如何命名包的成。由是通包的入名字引入包里面的成例如fmt.Println包含了包名和成名信息。因此,我一般不需要关注Println的具体内容,因fmt包名已包含了这个信息。当设计一个包的候,需要考包名和成员名两个部分如何很好地配合。下面有一些例子:
```
bytes.Equal flag.Int http.Get json.Marshal
```
可以看到一些常用的命名模式。strings包提供了和字符串相關的諸多操作:
可以看到一些常用的命名模式。strings包提供了和字符串相关的诸多操作:
```Go
package strings
@@ -30,9 +30,9 @@ type Reader struct{ /* ... */ }
func NewReader(s string) *Reader
```
字符串string本身併沒有出在每個成員名字中。因爲用戶會這樣引用些成strings.Index、strings.Replacer等。
字符串string本身并没有出在每个成员名字中。因为用户会这样引用些成strings.Index、strings.Replacer等。
其它一些包,可能描述了一的數據類例如html/template和math/rand等暴露一主要的數據結構和與它相的方法,有一以New命名的函數用於創建實例。
其它一些包,可能描述了一的数据类例如html/template和math/rand等暴露一主要的数据结构和与它相的方法,有一以New命名的函数用于创建实例。
```Go
package rand // "math/rand"
@@ -41,6 +41,6 @@ type Rand struct{ /* ... */ }
func New(source Source) *Rand
```
可能致一些名字重例如template.Template或rand.Rand就是爲什麽這些種類的包名往往特别短的原因之一。
可能致一些名字重例如template.Template或rand.Rand就是为什么这些种类的包名往往特别短的原因之一。
在另一個極端,有像net/http包那含有非常多的名字和種類不多的數據類型,因爲它們都是要行一個複雜的複合任務。盡管有近二十種類型和更多的函,但是包中最重要的成名字卻是簡單明了的Get、Post、Handle、Error、Client、Server等。
在另一个极端,有像net/http包那含有非常多的名字和种类不多的数据类型,因为它们都是要行一个复杂的复合任务。尽管有近二十种类型和更多的函,但是包中最重要的成名字却是简单明了的Get、Post、Handle、Error、Client、Server等。