猿问

目录结构和导入

我不明白包/项目目录结构是如何工作的。我正在关注这 2 个链接,在此处输入链接描述,在此处输入链接描述


我的 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 文件中使用算术.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 我不明白我做错了什么。


冉冉说
浏览 103回答 2
2回答

繁花不似锦

根据您的设置,包导入路径为:import&nbsp;"Tutorial/library"并且您应该将要在库包中导出的名称大写,以便您可以从其他包访问它们。一般情况下,导入路径如果是本地则为包的文件路径(相对于$GOPATH),否则为包的远程路径,如github.com/myaccount/package.&nbsp;诸如此类的简单导入名称import library是为内置包保留的。相对导入路径也可以,但不推荐使用,即import ./library.也就是说,模块系统 $GOPATH 不再使用。我建议您阅读模块以及如何在 $GOPATH 之外工作。

宝慕林4294392

在 Go 中,您想要导出(在包外部可用)的变量和函数需要以大写字母开头。package libraryfunc privateAddNum(a int, b int) int {&nbsp; return a + b}func PublicAddNum(a int, b int) int {&nbsp; return a + b}privateAddNum是一个未导出的函数,只能在library包内访问。PublicAddNum是一个导出函数,可以被导入的外部包访问library。
随时随地看视频慕课网APP

相关分类

Go
我要回答