如何访问同一包中但来自不同文件的未导出函数

我正在尝试在本地构建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 代码有任何想法吗?


素胚勾勒不出你
浏览 191回答 1
1回答

侃侃无极

同一个包的源文件可以毫不费力地引用任何源文件中定义的标识符。如果它们位于同一文件夹中并且具有相同的包声明,则您可以引用所有包级导出和未导出的标识符,就好像所有标识符都已在一个文件中定义一样。见规格:包:包又由一个或多个源文件构造而成,这些源文件共同声明了属于包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问这些常量、类型、变量和函数。和规范:包条款:一组共享相同 PackageName 的文件构成了一个包的实现。一个实现可能要求一个包的所有源文件都位于同一目录中。需要注意的一件事:您的示例似乎是特殊main包。如果要使用 运行它go run,则必须枚举所有源文件。要使用 运行您的示例go run,请导航到该gddo-server文件夹并键入:go&nbsp;run&nbsp;background.go&nbsp;browse.go&nbsp;client.go&nbsp;crawl.go&nbsp;graph.go&nbsp;main.go&nbsp;play.go&nbsp;template.go或者,如果您首先构建它,则更简单。导航到gddo-server文件夹并键入:go&nbsp;build这将在同一文件夹中生成本机可执行二进制文件。要运行它,请键入:(gddo-server在 Windows 上)或./gddo-server(在 Linux 上)。或者您可以安装它go install,它将结果可执行二进制文件放在您的$GOPATH/bin文件夹中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go