2017-11-11 8 views
3

Foo 구조체와 관련 메서드를 메서드와 같이 정의하기 때문에 "foo"라는 패키지가 있습니다.idomatic 구조체 패키지의 구조체 이름은 무엇입니까?

패키지에는 Foo struct가 할당 된 힙을 반환하는 New 메서드가 있습니다.

패키지 이름이 "foo"인 경우 구조체 유형을 Foo로 지정하는 것이 좋습니까? 나는 더듬기 때문에 확신 할 수 없다. 한편

var f foo.Foo

f := foo.New(...)

답변

5

그것은 괜찮 작성하는 자연 느낌, 또한 관용적이다. 표준 라이브러리에서

유사 예 :

또한 실제로는 foo.Foo이 예제 일 뿐이지 만 실제 유형 이름을 사용하면 패키지에 이미 설명 된 것과 똑같이 유형 이름에 단순화를 사용할 수도 있습니다. 예를 들어, 표준 lib에 http.CookieJar 인터페이스가 있고 패키지가 있으며 http.CookieJar을 구현하는 유형을 제공하며 이며 cookiejar.CookieJar이 아닌 패키지가 있습니다.

그래서 상식을 사용하여 패키지 사용자의 관점에서 볼 수 있습니다 (관점에서 볼 때). foo.Foo은 완벽합니다. 그러나 위의 비슷한 예제는 다른 많은 유형이 포함 된 패키지의 일부입니다. 이 패키지가 사용법에 따라 패키지를 내보낼 수있는 유일한 유형인 경우 foo.F 또한 의미심장하고 받아 들일 수 있습니다. 예를 들어, 의도적으로 짧게 만들어진 bson.Mbson.D 유형이 있습니다. MongoDB 쿼리를 작성하기 위해 자주 사용되거나 여러 번 사용되기 때문입니다. 문맥을 감안할 때, 그것이 무엇인지 분명하고, 문제 또는 오해를 유발하지 않습니다.