golang est un langage de programmation open source largement utilisé pour le développement de services réseau, d'applications à haute concurrence et de services cloud. Lors de l'écriture d'un projet en golang, une bonne structure de répertoires peut rendre le projet plus clair et plus facile à maintenir. Aujourd'hui, nous allons discuter des paramètres de la structure de répertoires golang.
La division des projets selon les modules fonctionnels est un paramètre de structure de répertoires courant dans Golang. La méthode spécifique consiste à créer plusieurs sous-répertoires dans le répertoire racine du projet, chaque sous-répertoire correspondant à un module fonctionnel. Par exemple, l'exemple suivant :
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
Dans la structure ci-dessus, nous divisons le projet en cmd
, pkg
et selon les modules fonctionnels du projet. internes
trois parties : cmd
、pkg
、internal
三个部分:
cmd
目录下存放的是可以直接运行的命令行工具,比如服务器程序 server
和客户端程序client
。pkg
目录下存放的是项目的业务逻辑代码,按照功能模块进行划分,比如user
模块和util
模块。internal
目录下存放的是项目的内部代码,只在项目中使用,外部包不会使用它。值得注意的是,虽然pkg
和internal
目录的作用看起来很相似,但是它们的区别在于,pkg
目录下的代码可以被外部包使用,而internal
目录下的代码只能在本项目中使用。
将代码按照类型进行划分,是另一种常见的golang目录结构设置方式。具体做法是在项目根目录下创建多个子目录,每个子目录对应一种代码类型。比如下面这个例子:
myproject/ ├── cmd/ │ ├── main.go ├── pkg/ │ ├── http/ │ │ ├── server.go │ │ ├── router.go │ ├── database/ │ │ ├── db.go │ ├── log/ │ │ ├── log.go ├── vendor/ ├── go.mod ├── go.sum
上面的结构中,我们根据代码类型将其分为了cmd
、pkg
、vendor
三个部分:
cmd
目录下的是可执行程序的入口文件,比如main.go
。pkg
目录下按照代码类型进行划分,比如将HTTP相关的代码放在http
目录下,将数据库相关的代码放在database
目录下等等。vendor
目录下存放的是项目所依赖的第三方包。相对于按照功能划分的方式,这种按照代码类型划分的方式更加灵活,但是可能会导致目录结构比较深,需要更多的时间去查找代码所在的位置。
大多数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模式将其分为了models
、views
、controllers
三个部分:
models
目录中存放的是模型层代码,通常是与数据库打交道的代码。views
目录中存放的是视图层代码,通常是网页模板等。controllers
cmd
stocke les outils en ligne de commande qui peuvent être exécutés directement, comme le serveur le programme serveur code> et le programme client <code>client
.
Le répertoire pkg
stocke le code de logique métier du projet, qui est divisé selon des modules fonctionnels, tels que le module user
et util
module.
Le répertoire internal
stocke le code interne du projet, qui est uniquement utilisé dans le projet et ne sera pas utilisé par les packages externes.
pkg
et internal
se ressemblent, leur différence est que pkg peut être utilisé par des packages externes, tandis que le code dans le répertoire internal
ne peut être utilisé que dans ce projet. #🎜🎜#cmd
, pkg
, vendorTrois parties : #🎜🎜#<ul>#🎜🎜#Le répertoire <code>cmd
est le fichier d'entrée du programme exécutable, tel que main.go code>. #🎜🎜##🎜🎜#Le répertoire <code>pkg
est divisé selon le type de code. Par exemple, les codes liés à HTTP sont placés dans le répertoire http
et ceux liés à la base de données. les codes sont placés dans le répertoire database
et ainsi de suite. #🎜🎜##🎜🎜#Le répertoire vendor
stocke les packages tiers dont dépend le projet. #🎜🎜##🎜🎜##🎜🎜# Par rapport à la division par fonction, cette méthode de division par type de code est plus flexible, mais elle peut conduire à une structure de répertoires plus profonde et nécessiter plus de temps pour trouver l'emplacement où se trouve le code situé. #🎜🎜#modèles
, vues
, contrôleursTrois parties : #🎜🎜#<ul>#🎜🎜#<code>models
Le code de la couche modèle est stocké dans le répertoire, généralement le code qui traite de la base de données. #🎜🎜##🎜🎜#Le répertoire views
stocke le code des couches de vues, généralement des modèles de pages Web, etc. #🎜🎜##🎜🎜#Le répertoire controllers
stocke le code de la couche contrôleur, qui est responsable de la connexion de la couche modèle et de la couche vue. #🎜🎜##🎜🎜##🎜🎜#Cette façon de diviser selon le modèle MVC peut rendre le code plus organisé et plus facile à maintenir. #🎜🎜##🎜🎜#Pour résumer, il existe de nombreuses façons de configurer le répertoire dans Golang, et différentes manières conviennent à différents projets. Nous pouvons choisir la méthode de paramétrage du répertoire correspondante en fonction de nos propres besoins. #🎜🎜#
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!