Par défaut, Go traite l'importation inutilisée comme une erreur, vous obligeant à supprimer l'importation. Je veux savoir s'il existe un espoir de changer ce comportement, par exemple en le réduisant à un avertissement.
Je trouve ce problème extrêmement ennuyeux, m'empêchant de profiter du codage dans Go.
Par exemple, je testais du code, désactivant un segment / une fonction. Certaines fonctions d'une bibliothèque ne sont plus utilisées (par exemple, fmt, erreurs, peu importe), mais je devrai réactiver la fonction après un petit test. Maintenant, le programme ne se compilera pas à moins que je supprime ces importations, et quelques minutes plus tard, je dois réimporter la bibliothèque.
Je faisais ce processus encore et encore lors du développement d'un programme GAE.
var _ = <module>.Function
fonctionne bien et il est suffisamment visible pour éviter que ce soit une pratique courante.goimports
une étape dans votre processus de construction. Sans l'un ni l'autre, il vieillit très vite.Réponses:
L'ajout d'un trait de soulignement (
_
) avant un nom de package ignorera l'erreur d'importation inutilisée.Voici un exemple de la façon dont vous pourriez l'utiliser:
En savoir plus sur https://golang.org/ref/spec#Import_declarations
la source
_
(sinon le package ne peut pas être référencé, car il n'a pas de nom). Si vous voulez faire cela, vous pouvez tout aussi bien le commenter / décommenter. L'var _ = ...
astuce n'a pas ce problème."fmt"
dans Gogland, il s'ajoute automatiquement"fmt"
pour que vous ayez à la fois_"fmt"
et"fmt"
, ce qui le rend inutile dans cet IDEL'
var _ = fmt.Printf
astuce est utile ici.la source
import
instruction et revenir lorsque vous essayez simplement de compiler ou de tester un fichier de code que vous étoffez de manière itérative .J'ai le même problème. Je comprends le raisonnement pour lequel ils ont implémenté le langage pour interdire les importations et les variables inutilisées, mais je trouve personnellement cette fonctionnalité ennuyeuse lors de l'écriture de mon code. Pour contourner cela, j'ai changé mon compilateur pour autoriser des indicateurs facultatifs pour autoriser les variables inutilisées et les importations dans mon code.
Si vous êtes intéressé, vous pouvez le voir sur https://github.com/dtnewman/modified_golang_compiler .
Maintenant, je peux simplement exécuter du code avec une commande telle que go run -gcflags '-unused_pkgs' test.go et il ne lancera pas ces erreurs "importation non utilisée". Si je laisse de côté ces indicateurs, il revient à la valeur par défaut de ne pas autoriser les importations inutilisées.
Cela n'a nécessité que quelques changements simples. Les puristes de Go ne seront probablement pas satisfaits de ces changements car il y a de bonnes raisons de ne pas autoriser les variables / importations inutilisées, mais je suis personnellement d'accord avec vous que ce problème rend beaucoup moins agréable de coder dans Go, c'est pourquoi j'ai apporté ces modifications à mon compilateur.
la source
go run main.go
désactiver les erreurs par défaut, tout engo build
activant les erreurs. De cette façon, il est facile de développer en utilisantgo run
et quand il est temps de construire pour la production, vous êtes toujours obligé de nettoyer votre code.Utilisez goimports . C'est essentiellement un fork de
gofmt
, écrit par Brad Fitzpatrick et maintenant inclus dans les packages d'outils go. Vous pouvez configurer votre éditeur pour l'exécuter chaque fois que vous enregistrez un fichier. Vous n'aurez plus jamais à vous soucier de ce problème.la source
Si vous utilisez le
fmt
package pour une impression générale sur la console pendant que vous développez et testez, vous pouvez trouver une meilleure solution dans le package de journaux .la source
println
que les gens semblent toujours oublier.println
?? C'est une nouvelle pour moi. Est-ce sans papiers? Je ne peux le trouver nul part.fmt
package pour la journalisation, sans savoir qu'il y avait un package de journalisation prêt à l'emploi.Utilisez
if false { ... }
pour commenter du code. Le code à l'intérieur des accolades doit être syntaxiquement correct, mais peut être un code absurde sinon.la source
Beaucoup de gens ont déjà commenté avec une justification valable et je reconnais également l'intention de l'auteur original. Cependant, Rob Pike a mentionné dans différents forums que Go est le résultat de la simplification des processus qui manquent à quelques autres langages de programmation traditionnels ou qui ne sont pas faciles à réaliser. C'est la sémantique du langage de Go ainsi que pour accélérer la compilation, il y a beaucoup de choses qui sont adoptées qui semblent initialement inefficaces.
Pour faire court, les importations inutilisées sont considérées comme des erreurs dans Go car elles effacent le programme et ralentissent la compilation. L'utilisation de l'importation pour l'effet secondaire (_) est une solution de contournement, cependant, je trouve cela déroutant parfois lorsqu'il y a un mélange d'importations valides avec des effets secondaires ainsi que des effets secondaires importés uniquement à des fins de débogage / test, en particulier lorsque la base de code est grand et il y a une chance d'oublier et de ne pas supprimer involontairement, ce qui peut confondre d'autres ingénieurs / réviseurs plus tard. J'avais l'habitude de commenter ceux qui n'étaient pas utilisés, cependant, les IDE populaires tels que le code VS et Goland peuvent
goimports
facilement être utilisés, ce qui fait assez bien l'insertion et la suppression des importations. Veuillez vous référer au lien pour plus d'informations, https://golang.org/doc/effective_go.html#blank_importla source
import _ "net/http/pprof"
mettez ceci au-dessus de votre document et oubliez les importations inutilisées:
la source
_
plutôt des variables globales (par exemple, soit un paquet par ligne, soit si vous insistez, tous ensemble comme:)var _, _, _, _ = fmt.Println, bufio.NewReader, os.Open, filepath.IsAbs
. Mais ne faites pas cela, utilisez simplementgoimports
.