Utilisez la structure de répertoires recommandée du langage Go (golang-standards / project-layout) pour les projets locaux (source privée)

go version go1.15.2

Selon la structure de répertoire recommandée par la communauté Go Language, le système de gestion de paquets standard "Go Modules / go / wiki / Modules) »en était subtilement accro. J'ai écrit le même article en mémo sur mon site, mais je l'ai aussi déposé sur Qiita parce que je voulais Tsukkomi.

Exemple de configuration d'annuaire

Les noms (et sous-éléments) avec un point d'exclamation (!) Sont des identificateurs arbitraires.

my_project(!)
├── web #Ressources hors système utilisées par le système Web. js ou images
├── assets #Ressources externes utilisées en dehors du système Web.
├── cmd #Stocker le module principal
│   ├── mainexe(!) #Fichier d'exécution dans le projet. Construire dans cette unité
│   │   └── main.go
│   └── confexe(!) #Un autre exemple de fichier d'exécution
│       └── main.go
├── configs #fichier de configuration
│   └── main.yaml(!)
├── docs #document. Parce que c'est pour moi, je mets un mémo
│   └── readme.md
├── internal #Module privé
│   ├── app #Un module dédié à ce projet. Est-ce une logique métier?
│   │   ├── mainexe(!) #Séparé par fichier exécutable
│   │   │   └ mainview #Sentiment de service dans MVCS?
│   │   │       └ mainview.go
│   │   └── confexe(!)
│   │       └ mainview
│   │           └ mainview.go
│   └── pkg #Module privé à usage général
│       └ my_lib(!) #Quelque chose à réutiliser
├── scripts #Shell utilisé au moment de la construction, etc.
└── go.mod #Fichiers générés par le module Go

Initialisation des modules Go

cd my_project
go mod init 192.168.0.0/my_project

À cet égard, le nom d'hôte a été défini sur 192.168.0.0.

Non publié en tant que module = Il n'est pas obtenu par go get, il n'a donc pas d'autre signification qu'une simple chaîne de caractères. (Je pense) Tout devrait bien se passer tant qu'il contient le point (.) C'est la règle du nom d'hôte. Initialisez en incluant le tout, pas sous cmd (module unit).

Utilisez le module à l'intérieur du module principal

package main

import (
	"192.168.0.0/my_project/internal/app/mainexe/mainview"
)

func main() {
	mainview.SomeFunction()
}

Vous pouvez l'utiliser sans aucun problème.

build

go build -o mainexe cmd/mainexe/*.go

L'option o spécifie le nom du fichier de sortie. Dans l'exemple ci-dessus, il est sorti directement sous le répertoire du projet. Vous pouvez créer un répertoire tel que dist et l'inclure comme chemin de destination de sortie.

Personnellement, j'ai créé build.sh dans le répertoire des scripts et J'ai écrit la commande ci-dessus et l'ai exécutée avec "./scripts/mainexe_build.sh".

Golang a été abandonné depuis longtemps, je suis donc encore un débutant, même s'il existe de vieux articles. Si vous avez des tsukkomi, veuillez m (_ _) m

Recommended Posts

Utilisez la structure de répertoires recommandée du langage Go (golang-standards / project-layout) pour les projets locaux (source privée)