Foo 구조체와 관련 메서드를 메서드와 같이 정의하기 때문에 "foo"라는 패키지가 있습니다.idomatic 구조체 패키지의 구조체 이름은 무엇입니까?
패키지에는 Foo struct가 할당 된 힙을 반환하는 New 메서드가 있습니다.
패키지 이름이 "foo"인 경우 구조체 유형을 Foo로 지정하는 것이 좋습니까? 나는 더듬기 때문에 확신 할 수 없다. 한편
var f foo.Foo
는
f := foo.New(...)
Foo 구조체와 관련 메서드를 메서드와 같이 정의하기 때문에 "foo"라는 패키지가 있습니다.idomatic 구조체 패키지의 구조체 이름은 무엇입니까?
패키지에는 Foo struct가 할당 된 힙을 반환하는 New 메서드가 있습니다.
패키지 이름이 "foo"인 경우 구조체 유형을 Foo로 지정하는 것이 좋습니까? 나는 더듬기 때문에 확신 할 수 없다. 한편
var f foo.Foo
는
f := foo.New(...)
그것은 괜찮 작성하는 자연 느낌, 또한 관용적이다. 표준 라이브러리에서
유사 예 :
list.List
, ring.Ring
time.Time
hash.Hash
image.Image
color.Color
또한 실제로는 foo.Foo
이 예제 일 뿐이지 만 실제 유형 이름을 사용하면 패키지에 이미 설명 된 것과 똑같이 유형 이름에 단순화를 사용할 수도 있습니다. 예를 들어, 표준 lib에 http.CookieJar
인터페이스가 있고 패키지가 있으며 http.CookieJar
을 구현하는 유형을 제공하며 이며 cookiejar.CookieJar
이 아닌 패키지가 있습니다.
그래서 상식을 사용하여 패키지 사용자의 관점에서 볼 수 있습니다 (관점에서 볼 때). foo.Foo
은 완벽합니다. 그러나 위의 비슷한 예제는 다른 많은 유형이 포함 된 패키지의 일부입니다. 이 패키지가 사용법에 따라 패키지를 내보낼 수있는 유일한 유형인 경우 foo.F
또한 의미심장하고 받아 들일 수 있습니다. 예를 들어, 의도적으로 짧게 만들어진 bson.M
과 bson.D
유형이 있습니다. MongoDB 쿼리를 작성하기 위해 자주 사용되거나 여러 번 사용되기 때문입니다. 문맥을 감안할 때, 그것이 무엇인지 분명하고, 문제 또는 오해를 유발하지 않습니다.