什么是“。” (点或句点)在Go import语句中做什么?

| 在Go教程和我看过的大多数Go代码中,软件包的导入方式如下:
import (
    \"fmt\"
    \"os\"
    \"launchpad.net/lpad\"
    ...
)
但是在http://bazaar.launchpad.net/~niemeyer/lpad/trunk/view/head:/session_test.go中,gocheck包以ѭ1导入(句点):
import (
    \"http\"
    . \"launchpad.net/gocheck\"
    \"launchpad.net/lpad\"
    \"os\"    
)
.
(句号)的意义是什么?     
已邀请:
        它允许在没有限定符的情况下在本地文件块中引用导入包中的标识符。   如果出现一个明确的句点(。)而不是名称,则所有程序包的导出标识符都将在当前文件的文件块中声明,并且可以在不使用限定符的情况下进行访问。      假定我们已经编译了一个包含package子句package math的软件包,该软件包导出函数Sin,并将编译后的软件包安装在\“ lib / math \”标识的文件中。下表说明了在各种类型的导入声明之后,如何在导入包的文件中访问Sin。
Import declaration          Local name of Sin

import   \"lib/math\"         math.Sin
import M \"lib/math\"         M.Sin
import . \"lib/math\"         Sin
参考:http://golang.org/doc/go_spec.html#Import_declarations     
        这是来自Python的类比: Go \的
import \"os\"
大致等于Python的
import os
Go的ѭ7roughly大致等于Python的
from os import *
在两种语言中,通常都不赞成使用后者,但是这样做有充分的理由。     
        仅应在测试中使用。 这是golang Wiki中的一些文档 如果您已经生成了诸如模拟程序之类的模拟代码,并导入了您的程序包代码,然后您的测试程序包也导入了您的程序包代码,则您将得到一个循环依赖项(golang的选择是让用户决定如何解析) 。 但是,如果在测试包中对要测试的包使用点符号,则它们将被视为同一包,并且没有循环依赖!     

要回复问题请先登录注册