>  기사  >  백엔드 개발  >  golang 디렉토리 설정

golang 디렉토리 설정

WBOY
WBOY원래의
2023-05-22 16:08:07655검색

golang은 네트워크 서비스 개발, 동시성 애플리케이션 및 클라우드 서비스에 널리 사용되는 오픈 소스 프로그래밍 언어입니다. golang에서 프로젝트를 작성할 때 좋은 디렉토리 구조는 프로젝트를 더 명확하고 유지 관리하기 쉽게 만들 수 있습니다. 오늘은 golang 디렉토리 구조의 설정에 대해 논의하겠습니다.

  1. 기능에 따라 나누기

기능 모듈에 따라 프로젝트를 나누는 것은 golang의 일반적인 디렉토리 구조 설정입니다. 구체적인 방법은 프로젝트 루트 디렉터리에 여러 하위 디렉터리를 만드는 것입니다. 각 하위 디렉터리는 기능 모듈에 해당합니다. 예를 들면 다음과 같습니다.

myproject/
├── cmd/
│   ├── server/
│   │   ├── main.go
│   ├── client/
│   │   ├── main.go
├── pkg/
│   ├── user/
│   │   ├── user.go
│   ├── util/
│   │   ├── util.go
├── internal/
│   ├── auth/
│   │   ├── auth.go
│   ├── db/
│   │   ├── db.go
├── vendor/
├── go.mod
├── go.sum

위 구조에서 프로젝트를 cmd, pkg, internal의 세 가지 유형으로 나눕니다. 프로젝트의 기능 모듈에 따라: cmdpkginternal三个部分:

  • cmd目录下存放的是可以直接运行的命令行工具,比如服务器程序 server和客户端程序client
  • pkg目录下存放的是项目的业务逻辑代码,按照功能模块进行划分,比如user模块和util模块。
  • internal目录下存放的是项目的内部代码,只在项目中使用,外部包不会使用它。

值得注意的是,虽然pkginternal目录的作用看起来很相似,但是它们的区别在于,pkg目录下的代码可以被外部包使用,而internal目录下的代码只能在本项目中使用。

  1. 根据代码类型划分

将代码按照类型进行划分,是另一种常见的golang目录结构设置方式。具体做法是在项目根目录下创建多个子目录,每个子目录对应一种代码类型。比如下面这个例子:

myproject/
├── cmd/
│   ├── main.go
├── pkg/
│   ├── http/
│   │   ├── server.go
│   │   ├── router.go
│   ├── database/
│   │   ├── db.go
│   ├── log/
│   │   ├── log.go
├── vendor/
├── go.mod
├── go.sum

上面的结构中,我们根据代码类型将其分为了cmdpkgvendor三个部分:

  • cmd目录下的是可执行程序的入口文件,比如main.go
  • pkg目录下按照代码类型进行划分,比如将HTTP相关的代码放在http目录下,将数据库相关的代码放在database目录下等等。
  • vendor目录下存放的是项目所依赖的第三方包。

相对于按照功能划分的方式,这种按照代码类型划分的方式更加灵活,但是可能会导致目录结构比较深,需要更多的时间去查找代码所在的位置。

  1. 根据MVC模式进行划分

大多数Web框架都采用了MVC(Model-View-Controller)模式,将程序按照这种模式进行划分也是很常见的一种golang目录结构设置方式。比如下面这个例子:

myproject/
├── cmd/
│   ├── main.go
├── pkg/
│   ├── models/
│   │   ├── user.go
│   ├── views/
│   │   ├── index.gohtml
│   ├── controllers/
│   │   ├── user.go
├── vendor/
├── go.mod
├── go.sum

上面的结构中,我们根据MVC模式将其分为了modelsviewscontrollers三个部分:

  • models目录中存放的是模型层代码,通常是与数据库打交道的代码。
  • views目录中存放的是视图层代码,通常是网页模板等。
  • controllers
    • cmd 디렉토리에는 서버 프로그램 server 및 클라이언트 프로그램 클라이언트 code>.

    pkg 디렉토리는 user 모듈 및 util와 같은 기능 모듈에 따라 구분된 프로젝트의 비즈니스 로직 코드를 저장합니다. > 모듈.

    internal 디렉터리에는 프로젝트 내부 코드가 저장되며, 해당 프로젝트에서만 사용되며 외부 패키지에서는 사용되지 않습니다.

    🎜🎜pkginternal 디렉터리의 기능이 매우 비슷해 보이지만 차이점은 pkg 디렉터리에 있다는 점입니다. 의 코드는 외부 패키지에서 사용할 수 있지만 internal 디렉터리의 코드는 이 프로젝트에서만 사용할 수 있습니다. 🎜
      🎜코드 유형에 따라 나누기🎜🎜🎜유형에 따라 코드를 나누는 것은 golang 디렉토리 구조를 설정하는 또 다른 일반적인 방법입니다. 구체적인 방법은 프로젝트 루트 디렉터리에 여러 하위 디렉터리를 만드는 것입니다. 각 하위 디렉터리는 코드 유형에 해당합니다. 예를 들면 다음과 같습니다. 🎜rrreee🎜위 구조에서는 코드 유형에 따라 cmd, pkg, vendor의 세 부분으로 나눕니다. :🎜
      🎜cmd 디렉터리에는 main.go와 같은 실행 프로그램에 대한 항목 파일이 포함되어 있습니다. 🎜🎜 pkg 디렉토리는 코드 종류에 따라 구분됩니다. 예를 들어 HTTP 관련 코드는 http 디렉토리에, 데이터베이스 관련 코드는 database code> 디렉토리 등등. 🎜🎜 <code>vendor 디렉토리는 프로젝트가 의존하는 타사 패키지를 저장합니다. 🎜🎜🎜기능별로 나누는 방법에 비해 이 코드 유형별로 나누는 방법은 더 유연하지만 디렉토리 구조가 더 깊어지고 코드 위치를 찾는 데 더 많은 시간이 필요할 수 있습니다. 🎜
        🎜MVC 패턴에 따라 구분🎜🎜🎜대부분의 웹 프레임워크는 MVC(Model-View-Controller) 패턴을 채택하고 있으며, golang에서도 이 패턴에 따라 프로그램을 구분하는 것이 매우 일반적입니다. 디렉토리 구조를 설정합니다. 예를 들어 다음 예는 다음과 같습니다. 🎜rrreee🎜위 구조에서는 MVC 패턴에 따라 모델, 컨트롤러의 세 부분으로 나눕니다. :🎜
        🎜 models 디렉토리에는 모델 계층 코드, 일반적으로 데이터베이스를 다루는 코드가 저장됩니다. 🎜🎜views 디렉토리에는 뷰 레이어 코드, 일반적으로 웹 페이지 템플릿 등이 저장됩니다. 🎜🎜controllers 디렉터리에는 모델 계층과 뷰 계층을 연결하는 컨트롤러 계층 코드가 저장됩니다. 🎜🎜🎜이렇게 MVC 패턴에 따라 나누는 방식으로 코드를 더 체계적으로 정리하고 유지 관리하기 쉽게 만들 수 있습니다. 🎜🎜요약하자면, golang에서 디렉토리를 설정하는 방법에는 여러 가지가 있으며, 프로젝트마다 적합한 방법도 다릅니다. 우리는 필요에 따라 해당 디렉토리 설정 방법을 선택할 수 있습니다. 🎜

    위 내용은 golang 디렉토리 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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