Im Go-Tutorial und im größten Teil des Go-Codes, den ich mir angesehen habe, werden Pakete wie folgt importiert:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
In http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go wird das Gocheck-Paket jedoch mit einem .
(Punkt) importiert :
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Welche Bedeutung hat die .
(Periode)?
Antworten:
Damit können die Bezeichner im importierten Paket ohne Qualifizierer im lokalen Dateiblock referenziert werden.
Ref: http://golang.org/doc/go_spec.html#Import_declarations
quelle
import "fmt"
vs zu kompilierenimport . "fmt"
, aber in beiden Fällen war es für mich gleich groß.)Hier ist eine Analogie für diejenigen, die aus Python kommen:
import "os"
entspricht in etwa Pythonsimport os
import . "os"
entspricht in etwa Pythonsfrom os import *
In beiden Sprachen ist die Verwendung von Letzterem im Allgemeinen verpönt, aber es kann gute Gründe dafür geben.
quelle
Dies sollte nur zum Testen verwendet werden.
Hier ist eine Dokumentation in Golangs Wiki
Wenn Sie einig Mock - Code wie mit mockgen generiert haben und es importiert Ihren Paketcode, und dann testet Paket auch importiert Ihren Paketcode, erhalten Sie eine zirkuläre Abhängigkeit (etwas golang wählt den Benutzer zu lassen , wie zu lösen , um zu entscheiden).
Wenn Sie jedoch in Ihrem Testpaket die Punktnotation für das zu testende Paket verwenden, werden diese als dasselbe Paket behandelt und es besteht keine zirkuläre Abhängigkeit!
quelle