我有一個名爲「foo」的包,因爲它定義了一個Foo結構和相關的東西,如方法。包裝中結構的idomatic Go名稱?
該軟件包有一個返回堆分配的Foo結構的新方法。
包名稱爲「foo」時可以命名結構類型Foo嗎?我不確定,因爲它會結結巴巴。
var f foo.Foo
在另一方面,它感覺自然寫
f := foo.New(...)
我有一個名爲「foo」的包,因爲它定義了一個Foo結構和相關的東西,如方法。包裝中結構的idomatic Go名稱?
該軟件包有一個返回堆分配的Foo結構的新方法。
包名稱爲「foo」時可以命名結構類型Foo嗎?我不確定,因爲它會結結巴巴。
var f foo.Foo
在另一方面,它感覺自然寫
f := foo.New(...)
這是確定的,而且它也是地道。
標準庫中類似的例子:
此外,我猜foo.Foo
只是一個例子,但是對於您的實際類型名稱,您也可以在類型名稱中使用簡化,這完全是因爲該包已經描述了它。例如,在標準庫中有一個http.CookieJar
接口,並且有一個net/http/cookiejar
程序包,它提供了一個實現http.CookieJar
的類型,它被命名爲cookiejar.Jar
,而不是cookiejar.CookieJar
。
所以,只需使用常識,從包裝用戶的角度來看(從他們的角度來看)。 foo.Foo
非常好。但上面的類似示例是包含許多其他類型的包的一部分。如果這是您的軟件包唯一可以導出的類型,則根據使用情況,foo.F
也可能是明智的和可接受的。舉例來說,有bson.M
和bson.D
類型故意縮短,因爲它們經常用於甚至多次用於創建MongoDB查詢。鑑於上下文,清楚它們是什麼,並且不會造成麻煩或誤解。