什么是'。' (点或句点)在一个Go导入语句中呢?

在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" ) 

有什么意义的. (期)?

它允许导入的包中的标识符在没有限定符的情况下在本地文件块中被引用。

如果显示句点(。)而不是名称,则所有包的导出标识符将在当前文件的文件块中声明,并且可以在没有限定符的情况下访问。

假设我们已经编译了一个包含package子句包math的包,它导出了函数Sin,并将编译后的包安装在由“lib / math”标识的文件中。 该表说明了在各种types的导入声明之后如何导入包中的文件。

 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
  • import . "os" import . "os"大致相当于from os import * Python from os import *

在这两种语言中,使用后者通常是不被接受的,但是可以有充分的理由去做。