目录结构和导入

时间:2019-11-25 20:22:05

标签: go

我不了解包/项目目录结构的工作方式。 我正在关注这两个链接enter link description hereenter 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 我不明白我在做什么错。

2 个答案:

答案 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的外部程序包将对其进行访问。