>  기사  >  백엔드 개발  >  GO — 프로젝트 구조

GO — 프로젝트 구조

王林
王林원래의
2024-07-17 03:41:01866검색

올해(2022년) 실제로 Golang을 사용하여 프로그래밍을 시작했고, 즉시 한 일은 프로젝트 구조를 발전시키는 가장 좋은 방법에 대한 참고 자료를 찾는 것이었습니다. 이 게시물은 같은 주제에 대해 이야기하는 다른 많은 게시물 중 하나일 뿐이므로 아마도 이것이 제가 이 게시물을 쓰기로 결정한 이유일 것입니다.

첫째, golang은 폴더/패키지를 처리하는 방식이 이미 매우 다르며, 개선하기 위해 Golang은 무언가를 수행하는 "고웨이" 방식이 무엇인지 알려주는 많은 공식 문서와 함께 매우 독선적인 본질을 가지고 있습니다(전체 터치) 하지만 파일과 폴더를 정리하는 방식에는 정해진 방향이 없기 때문에 이 부분에 대해서는 다들 각자의 해석을 내놓는 편입니다.

이 게시물을 3개의 참고 자료로 나눈 다음 이 참고 자료의 조합이 프로젝트에서 어떻게 나타나는지 보여 드리겠습니다.

첫 번째 참조

작동하는 단순한 시스템에서 변함없이 작동하는 복잡한 시스템이 진화했습니다.
-- 갈의 법칙

작은 애플리케이션의 경우 프로젝트 구조가 단순해야 합니다.

Imagem para um projeto simples com tudo na raiz


https://innovation.enova.com/gophercon-2018-how-do-you-structure-your-go-apps/

두 번째 참조

"커뮤니티"에서는 Go 생태계에서 흔히 볼 수 있는 일련의 역사적 및 새로운 디자인 레이아웃 패턴에 대한 설문 조사를 수행했습니다. 이 설문 조사에는 멋진 내용이 많이 있지만 제 관심을 끈 것은 /cmd 및 /internal 폴더였습니다. .

/cmd

이 프로젝트의 주요 애플리케이션
각 애플리케이션의 디렉터리 이름은 갖고 싶은 실행 파일의 이름(예: /cmd/myapp)과 일치해야 합니다.

/내부

비공개 애플리케이션 및 라이브러리 코드. 이는 다른 사람이 자신의 애플리케이션이나 라이브러리로 가져오는 것을 원하지 않는 코드입니다. 이 레이아웃 패턴은 Go 컴파일러 자체에 의해 적용됩니다.

세 번째 참고자료

실제로 가치를 제공하는 것과 "세부 사항"을 더 잘 분리하는 아키텍처.

GO — Estrutura de projetos


결과

간단한 애플리케이션의 경우 단순하게 유지하려고 노력하지만 범위가 조금 더 커지면 "코어"/도메인과 세부/인프라를 약간 구별하려고 노력합니다.

GO — Estrutura de projetos


참고 프로젝트에서 알 수 있듯이 cmd에는 tuttipet 폴더가 없습니다. 처음에는 제안된 패턴을 사용하려고 했지만 이 API는 이미 명령줄 인터페이스와 테라폼 공급자가 함께 나왔기 때문에 이대로 두기로 결정했습니다.

GO — Estrutura de projetos


핵심을 빠르게 확대합니다. 여기서는 단순하게 생각하고 폴더를 만들지 않으려고 노력합니다. 저는 외부 세계(main.go)와 단 1개의 접점만 유지합니다. 일반화된 것은 모두 자체 파일을 갖고, 그렇지 않은 것은 모두 해당 컨텍스트 내에 남아 있습니다.

GO — Estrutura de projetos


tuttipet.New(짧고 간결하며 연상적임)를 사용하면 "더티" 레이어가 유스케이스와 상호작용할 수 있습니다(인터랙터보다 유스케이스라는 단어를 더 쉽게 동화할 수 있습니다)

GO — Estrutura de projetos


세부 사항을 빠르게 확대해 보세요. 다음은 도메인이 성공할 수 있는 도구입니다.

결론

저는 아직 Golang이 제공하는 길에 있는 어린아이이고 Golang으로 무엇을 할 수 있는지 알아내고 있습니다. 하지만 일부 작업을 수행하는 Go 방식이 마음에 들지 않더라도 꽤 간단하다는 것이 입증되었습니다. 견고합니다.

요약하자면, 가능하면 간단하게 하려고 노력하다가 너무 복잡해지면... 다시 처음부터 다시 시작하겠습니다.

기타 참고자료

https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a
https://github.com/golang-standards/project-layout
https://blog.boot.dev/golang/golang-project-structure/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-structure-my-go-project/
https://blog.logrocket.com/plat-structure-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structure-go-code/
https://dev.to/jinxankit/go-project-structure-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/plat-application-structure/
https://go.dev/doc/valid_go#names
https://go.dev/blog/package-names

원본 게시물: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d

위 내용은 GO — 프로젝트 구조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:공장 디자인 패턴다음 기사:공장 디자인 패턴