В руководстве по Go и большей части кода Go, на который я смотрел, пакеты импортируются следующим образом:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
Но в http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go пакет gocheck импортируется с .
(точка):
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Какое значение имеет .
(период)?
Ответы:
Это позволяет ссылаться на идентификаторы в импортированном пакете в локальном файловом блоке без квалификатора.
Ссылка: http://golang.org/doc/go_spec.html#Import_declarations
источник
import "fmt"
vsimport . "fmt"
, но в обоих случаях это был один и тот же размер для меня.)Вот аналогия для тех, кто приходит с Python:
import "os"
примерно эквивалентно Pythonimport os
import . "os"
примерно эквивалентно Pythonfrom os import *
На обоих языках использование последнего обычно осуждается, но могут быть веские причины для этого.
источник
Это следует использовать только в тестировании.
Вот некоторая документация в вики Голанга
Если вы сгенерировали какой-то фиктивный код, например, с помощью mockgen, и он импортирует код вашего пакета, а затем ваш тестовый пакет также импортирует код вашего пакета, вы получаете циклическую зависимость (что-то, что golang выбирает, чтобы пользователь мог решить, как решить).
Однако, если внутри вашего пакета тестирования вы используете точечную нотацию в пакете, который вы тестируете, то они рассматриваются как один и тот же пакет, и круговой зависимости не будет!
источник