2017-11-11 10 views
3

私はfoo構造体とメソッドのような関連するものを定義するので、 "foo"という名前のパッケージを持っています。idomaticパッケージ内の構造体のGo名?

パッケージには、Foo構造体が割り当てられたヒープを返す新しいメソッドがあります。

パッケージ名が "foo"の場合は、構造体型Fooの名前を付けてもよろしいですか?私はそれが吃音になるので確信しています。一方

var f foo.Foo

それはそれは大丈夫です、それはまた、慣用だ

f := foo.New(...)

答えて

5

を書くために自然な感じ。標準ライブラリから

同様の例:

また、私はfoo.Fooが単なる例であると思いますが、あなたの実際の型名では、型名に簡略化を使用することもできます。たとえば、標準libにhttp.CookieJarインターフェイスがあり、を実装するタイプを提供するnet/http/cookiejarパッケージがあり、cookiejar.CookieJarではなくcookiejar.Jarという名前です。

だから、ちょうど常識を使い、(その観点から)パッケージのユーザーの観点から見てください。 foo.Fooは完全に問題ありません。しかし、上記の同様の例は、他の多くのタイプを含むパッケージの一部です。パッケージが使用する唯一のタイプであれば、foo.Fも賢明で受け入れられるかもしれません。例として、意図的に短くされたbson.Mbson.Dの型があります。それらはMongoDBクエリを作成するために頻繁に、そして複数回使用されるからです。文脈を考えれば、彼らが何であるかが明らかであり、トラブルや誤解を引き起こさない。

関連する問題