Cet article suit toujours la dernière version, donc le contenu obsolète sera supprimé. Si vous le trouvez obsolète, veuillez me contacter si vous le pouvez.
aller mod
Le contenu suivant a été intégré à Goland, afin que les frères qui utilisent Goland puissent écrirego mod tidy
Présentation des modules Go
go modules est une nouvelle fonctionnalité de golang 1.11, qui est utilisée pour gérer les dépendances des packages dans les modules .
Comment utiliser le mod go
- Initialiser le module
go mod init <项目模块名称>
- Gestion des dépendances, selon le fichier go.mod
go mod tidy
- Copiez le package de dépendance dans le répertoire du fournisseur sous le projet.
go mod vendor
Si le paquet est bloqué (wall), vous pouvez utiliser cette commande puis utiliser go build -mod=vendor pour compiler - afficher les dépendances
go list -m all
- afficher les dépendances détaillées
go list -m -json all
- téléchargement dépendant du téléchargement
importer
importation du chemin complet
importation d'une seule ligne
import "包名"
importation multiligne
Il est préférable de les organiser dans l'ordre ASCII. (Ma suggestion est de laisser cette affaire à l'IDE) Laissez cette affaire mécanisée à la machine. §(  ̄▽ ̄ )§
import (
"包名"
"包名"
"包名"
)
exemple
import (
_ "fmt"
"log"
"os"
)
Importer uniquement et ne pas utiliser
Indique que seule la fonction d'initialisation ( fonction go init ) de la bibliothèque importée est appelée et implémentée , et que le scénario d'utilisation est principalement une connexion à la base de données.
import _ "包名"
exemple
import _ "fmt"
Renommer les packages importés
Pour empêcher les packages importés portant le même nom (Est-il normal que différents auteurs portent le même nom ?)(e _ e)
impor 新名 "包名"
exemple
import (
"crypto/rand"
mrand "math/rand" // 将名称替换为mrand避免冲突
)
Renommer les packages importés n'affecte que le fichier source actuel. Les autres fichiers source qui importent le même package peuvent soit utiliser le nom par défaut d'origine du package importé, soit être renommés en un nom complètement différent.
Ne pas afficher le nom de la bibliothèque, appeler directement la méthode
L'effet est de supprimer le nom du package. À l'époque, cela n'était pas recommandé. Il est facile d'avoir le même nom dans les grands projets. À l'heure actuelle, le nom du package est une clé pour distinguer les fonctions.
import . "包名"
télécharger
有些时候,你需要的包并没有被包含,因此你在写代码时不会出现代码补全;又或者你使用别人的项目发现一片红色,大概率就是你没有下载对应的包。
go get
go get 只用来下载普通的包,安装可执行程序,应该使用 go install
即 go get 现在仅仅只能增减依赖包
In Go 1.18,
go get
will no longer build packages; it will only be used to add, update, or remove dependencies ingo.mod
. Specifically,go get
will always act as if the-d
flag were enabled.
关于 url 可以到 https://pkg.go.dev/ 中直接查询
命令格式
go get url [附加参数]
- url :远程包的地址,如: https://github.com/davyxu/tabtoy
附加参数
使用 go get 时可以配合附加参数显示更多的信息及实现特殊的下载和安装操作,详见下表所示。
标记名称 | 描述 |
---|---|
-d | 让命令程序只执行下载动作,而不执行安装动作。 |
-f | 仅在使用-u标记时才有效。该标记会让命令程序忽略掉对已下载代码包的导入路径的检查。如果下载并安装的代码包所属的项目是你从别人那里Fork过来的,那么这样做就尤为重要了。 |
-fix | 让命令程序在下载代码包后先执行修正动作,而后再进行编译和安装。 |
-t | 让命令程序同时下载并安装指定的代码包中的测试源码文件中依赖的代码包。 |
-u | Laissez la commande utiliser le réseau pour mettre à jour les packages de code existants et leurs dépendances. Par défaut, cette commande télécharge uniquement les packages de code qui n'existent pas localement à partir du réseau et ne met pas à jour les packages de code existants. |
allez installer
Cette commande est utilisée pour compiler et installer les packages de code spécifiés et leurs packages dépendants. Lorsque les packages dépendants du package de code spécifié n'ont pas été compilés et installés, cette commande traitera d'abord les packages dépendants. Comme pour go buil
la commande d, go install
les arguments de package de code passés à la commande doivent être fournis en tant que chemins d'importation.
De plus, go build
la plupart des drapeaux des commandes peuvent également être utilisés pour go install
les commandes. En fait, go install
la commande ne go build
fait qu'une chose de plus que la commande, à savoir : installer le fichier de résultat compilé dans le répertoire spécifié.