包中结构的惯用 Go 名称?
idiomatic Go name for struct in package?
我有一个名为 "foo" 的包,因为它定义了一个 Foo 结构和相关的东西,比如方法。
该包有一个新方法,returns 堆分配了 Foo 结构。
当包名为 "foo" 时,可以将结构类型命名为 Foo 吗?我不确定,因为它会口吃。
var f foo.Foo
另一方面写起来感觉很自然
f := foo.New(...)
还可以,也很地道。
标准库中的类似示例:
此外,我想 foo.Foo
只是一个示例,但是对于您的实际类型名称,您也可以在类型名称中使用简化,正是因为包已经描述了它。例如,有一个 http.CookieJar
interface in the standard lib, and there is a net/http/cookiejar
package which provides a type that implements http.CookieJar
, and it is named cookiejar.Jar
,而不是 cookiejar.CookieJar
。
所以只要用常识,从包的用户的角度(从他们的角度来看)来看待它。 foo.Foo
完全没问题。但是上面的类似示例是包含许多其他类型的包的一部分。如果这是您的包将导出的唯一类型,根据用途,foo.F
也可能是明智和可接受的。例如,有 bson.M
and bson.D
类型故意缩短,因为它们经常甚至多次使用来创建 MongoDB 查询。鉴于上下文很清楚它们是什么,不会引起麻烦或误解。
我有一个名为 "foo" 的包,因为它定义了一个 Foo 结构和相关的东西,比如方法。
该包有一个新方法,returns 堆分配了 Foo 结构。
当包名为 "foo" 时,可以将结构类型命名为 Foo 吗?我不确定,因为它会口吃。
var f foo.Foo
另一方面写起来感觉很自然
f := foo.New(...)
还可以,也很地道。
标准库中的类似示例:
此外,我想 foo.Foo
只是一个示例,但是对于您的实际类型名称,您也可以在类型名称中使用简化,正是因为包已经描述了它。例如,有一个 http.CookieJar
interface in the standard lib, and there is a net/http/cookiejar
package which provides a type that implements http.CookieJar
, and it is named cookiejar.Jar
,而不是 cookiejar.CookieJar
。
所以只要用常识,从包的用户的角度(从他们的角度来看)来看待它。 foo.Foo
完全没问题。但是上面的类似示例是包含许多其他类型的包的一部分。如果这是您的包将导出的唯一类型,根据用途,foo.F
也可能是明智和可接受的。例如,有 bson.M
and bson.D
类型故意缩短,因为它们经常甚至多次使用来创建 MongoDB 查询。鉴于上下文很清楚它们是什么,不会引起麻烦或误解。