一尘不染

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

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

.(期间)的意义是什么?


阅读 226

收藏
2020-07-02

共1个答案

一尘不染

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

如果出现一个明确的句点(。)而不是名称,则所有软件包导出的标识符都将在当前文件的文件块中声明,并且可以在不使用限定符的情况下进行访问。

假设我们已经编译了一个包含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

2020-07-02