我有一个名为"foo"的包,因为它定义了一个Foo结构和相关的东西,比如方法.
该包有一个New方法,它返回一个堆分配的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被故意做出short类型,因为他们经常使用,甚至多次以创建MongoDB的查询.鉴于上下文,它们很清楚它们是什么,并且不会引起麻烦或误解.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |