在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子句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

Go相关问答推荐

如何在Deliverq中高效地传达客户依赖关系?

try 用GitHub操作中的release标签更新version. go文件,但失败了

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

我可以扫描表中每个项目的最高范围键值吗?

通过 Terraform 中的 MapNestedAtribute 进行迭代

使用 Golang 获取目录磁盘使用情况

转到 bufio.Writer、gzip.Writer 并上传到内存中的 AWS S3

这是泛型的有效用例吗?

如何在 Go 中将 int 转换为包含 complex128 的泛型类型?

下载和合并时输出文件已损坏

Golang 网络应用程序安全性:您是否应该判断输入是否为有效的 utf-8?

加载 docker 镜像失败

自定义 Fyne 自适应网格布局

当函数返回一个函数时,为什么 Go 泛型会失败?

获取切片元素的地址是否意味着 Go 中元素的副本?

Go cmp - 如何为以 struct 为键的映射定义自定义相等性?

为什么当我忽略 template.New() 程序可以成功运行?

如何在 Windows 上使用 cgo 为 386 arch 构建 lib?

通用函数与外部包中的常见成员一起处理不同的 struct ?

Go generics:我会在哪里使用 any 而不是 interface{}?