我不了解包/项目目录结构的工作方式。 我正在关注这两个链接enter link description here和enter link description here
我的Go工作区位于/ workspace / golang下。
我的$GOPATH
等于/workspace/golang
我的目录结构如下:
/workspace/golang/src/Tutorial/
...tutorial_main.go <- Default 'Hello World' program
...library/
......arithmetic.go
算术.go的内容:
package library
func addNum(a int, b int) int {
return a + b
}
我cd
进入库文件夹并运行go build arithmetic
现在,我无法在tutorial_main.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
我不明白我在做什么错。
答案 0 :(得分:2)
在设置后,程序包导入路径为:
import "Tutorial/library"
并且您应该在库包中将要导出的名称大写,以便可以从其他包中访问它们。
通常,导入路径是程序包的文件路径(相对于$ GOPATH)(如果是本地的)或程序包的远程路径,例如github.com/myaccount/package
。简单的导入名称(例如import library
)保留给内置软件包。相对导入路径也可以使用,但不建议使用它们,即import ./library
。
也就是说,不再使用$ GOPATH模块系统。我建议您阅读模块以及如何在$ GOPATH之外工作。
答案 1 :(得分:1)
在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
的外部程序包将对其进行访问。