gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:29:57 27 4
gpt4 key购买 nike

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

文件夹结构是,

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

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

最佳答案

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

参见 Spec: Packages :

A package in turn is constructed from one or more source files that together declare constants, types, variables and functions belonging to the package and which are accessible in all files of the same package.

Spec: Package clause :

A set of files sharing the same PackageName form the implementation of a package. An implementation may require that all source files for a package inhabit the same directory.

需要注意的一件事:您的示例似乎是特殊的 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

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

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

关于function - 如何访问同一包中但来自不同文件的未导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com