我不明白包/项目目录结构是如何工作的。我正在关注这 2 个链接,在此处输入链接描述,在此处输入链接描述我的 Go 工作区位于 /workspace/golang 下。我的$GOPATH等于/workspace/golang我的目录结构如下:/workspace/golang/src/Tutorial/...tutorial_main.go <- Default 'Hello World' program...library/......arithmetic.go算术.go 的内容:package libraryfunc addNum(a int, b int) int { return a + b}我cd进入库文件夹并运行go build arithmetic现在,我不知道如何在tutorial_main.go 文件中使用算术.go。我尝试了以下操作:import "library"fmt.Println("Result : ", library.addNum(1,4))import "Tutorial/library"fmt.Println("Result : ", library.addNum(1,4))import "src/Tutorial/library"fmt.Println("Result : ", library.addNum(1,4))两者都不起作用。它一直说找不到library 我不明白我做错了什么。
2 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
根据您的设置,包导入路径为:
import "Tutorial/library"
并且您应该将要在库包中导出的名称大写,以便您可以从其他包访问它们。
一般情况下,导入路径如果是本地则为包的文件路径(相对于$GOPATH),否则为包的远程路径,如github.com/myaccount/package
. 诸如此类的简单导入名称import library
是为内置包保留的。相对导入路径也可以,但不推荐使用,即import ./library
.
也就是说,模块系统 $GOPATH 不再使用。我建议您阅读模块以及如何在 $GOPATH 之外工作。
宝慕林4294392
TA贡献2021条经验 获得超8个赞
在 Go 中,您想要导出(在包外部可用)的变量和函数需要以大写字母开头。
package library
func privateAddNum(a int, b int) int {
return a + b
}
func PublicAddNum(a int, b int) int {
return a + b
}
privateAddNum是一个未导出的函数,只能在library包内访问。
PublicAddNum是一个导出函数,可以被导入的外部包访问library。
- 2 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消