W samouczku Go i większości kodu Go, który przeglądałem, pakiety są importowane w następujący sposób:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
Ale w http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go pakiet gocheck jest importowany z .
(kropką):
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Jakie jest znaczenie .
(okres)?
Odpowiedzi:
Pozwala na odwoływanie się do identyfikatorów w zaimportowanym pakiecie w lokalnym bloku pliku bez kwalifikatora.
Ref: http://golang.org/doc/go_spec.html#Import_declarations
źródło
import "fmt"
vsimport . "fmt"
, ale w obu przypadkach był to ten sam rozmiar dla mnie.)Oto analogia dla tych pochodzących z Pythona:
import "os"
jest z grubsza odpowiednikiem Pythonaimport os
import . "os"
jest z grubsza odpowiednikiem Pythonafrom os import *
W obu językach używanie tego drugiego jest generalnie źle widziane, ale mogą być ku temu dobre powody.
źródło
Powinno to być używane tylko w testach.
Oto dokumentacja na wiki golanga
Jeśli wygenerowałeś jakiś fałszywy kod, taki jak mockgen, i importuje on twój kod pakietu, a następnie twój pakiet testowy również importuje kod pakietu, otrzymujesz zależność cykliczną (coś, co golang decyduje, aby użytkownik zdecydował, jak rozwiązać).
Jednakże, jeśli wewnątrz pakietu testowego używasz notacji kropkowej na testowanym pakiecie, są one traktowane jako ten sam pakiet i nie ma zależności cyklicznej!
źródło