No tutorial Go, e na maior parte do código Go, os pacotes são importados assim:
import (
"fmt"
"os"
"launchpad.net/lpad"
...
)
Mas em http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go , o pacote gocheck é importado com um .
(ponto):
import (
"http"
. "launchpad.net/gocheck"
"launchpad.net/lpad"
"os"
)
Qual é o significado do .
(período)?
Respostas:
Ele permite que os identificadores no pacote importado sejam referidos no bloco de arquivos local sem um qualificador.
Ref: http://golang.org/doc/go_spec.html#Import_declarations
fonte
import "fmt"
vsimport . "fmt"
, mas em ambos os casos foi o mesmo tamanho para mim.)Aqui está uma analogia para quem vem do Python:
import "os"
é aproximadamente equivalente ao de Pythonimport os
import . "os"
é aproximadamente equivalente ao de Pythonfrom os import *
Nos dois idiomas, o uso desse último é geralmente desaprovado, mas pode haver boas razões para isso.
fonte
Isso deve ser usado apenas em testes.
Aqui está alguma documentação no wiki do golang
Se você gerou algum código simulado, como o mockgen, e ele importa o código do pacote, e o seu pacote de teste também importa o código do pacote, você recebe uma dependência circular (algo que o golang escolhe para permitir que o usuário decida como resolver).
No entanto, se dentro do seu pacote de teste você usar notação de ponto no pacote que está testando, eles serão tratados como o mesmo pacote e não haverá dependência circular!
fonte