Dans le didacticiel Go, et dans la plupart du code Go que j'ai examiné, les packages sont importés comme suit:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
Mais dans http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go , le paquet gocheck est importé avec un .
(point):
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Quelle est la signification de la .
(période)?
Réponses:
Il permet aux identificateurs du package importé d'être référencés dans le bloc de fichiers local sans qualificatif.
Réf: http://golang.org/doc/go_spec.html#Import_declarations
la source
import "fmt"
vsimport . "fmt"
, mais dans les deux cas, c'était la même taille pour moi.)Voici une analogie pour ceux qui viennent de Python:
import "os"
est à peu près équivalent à Pythonimport os
import . "os"
est à peu près équivalent à Pythonfrom os import *
Dans les deux langues, l'utilisation de ce dernier est généralement mal vue, mais il peut y avoir de bonnes raisons de le faire.
la source
Cela ne doit être utilisé que pour les tests.
Voici de la documentation sur le wiki de Golang
Si vous avez généré un code fictif comme avec mockgen et qu'il importe votre code de package, puis que votre package de test importe également votre code de package, vous obtenez une dépendance circulaire (quelque chose que golang choisit de laisser l'utilisateur décider comment résoudre).
Cependant, si dans votre package de test, vous utilisez la notation par points sur le package que vous testez, ils sont traités comme le même package et il n'y a pas de dépendance circulaire à avoir!
la source