0

我正在尝试在本地构建godoc.org源代码以进行一些更改。我的工作目录是/Users/Dany/go/src/github.com/golang/gddo. 在 gddo-server 包中有几个文件。其中一个 go 文件使用了另一个文件中的函数,该文件在同一个包中但未导出。它正在抛出Undefined: <function-name>异常。

文件夹是结构是,

golang/gddo/
              gddo-server
                        main.go
                        crawl.go

我们如何在不同文件中使用同一包中未导出的函数?谁能帮我解决这个问题。另外,如果有人对如何构建 godoc.org 代码有任何想法?

4

1 回答 1

4

同一个包的源文件可以毫不费力地引用任何源文件中定义的标识符。如果它们在同一个文件夹中并且它们具有相同的包声明,则您可以引用所有包级导出和未导出的标识符,就好像它们都已在一个文件中定义一样。

规格:包

一个包又由一个或多个源文件构成,这些源文件一起声明了属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。

规格:包条款

一组共享相同 PackageName 的文件构成了一个包的实现。一个实现可能要求一个包的所有源文件位于同一个目录中。

需要注意的一件事:您的示例似乎是特殊main包。如果要使用 运行它go run,则必须枚举所有源文件。

要使用 运行您的示例,请go run导航到该gddo-server文件夹​​并键入:

go run background.go browse.go client.go crawl.go graph.go main.go play.go template.go 

或者如果您首先构建它,则更简单。导航到gddo-server文件夹并键入:

go build

这将在同一文件夹中生成本机可执行二进制文件。要运行它,请键入:(gddo-server在 Windows 上)或./gddo-server(在 Linux 上)。

或者您可以安装它go install,将结果可执行二进制文件放在您的$GOPATH/bin文件夹中。

于 2015-10-07T06:34:53.357 回答