使用Go模块时如何导入本地软件包

时间:2019-05-19 16:23:56

标签: go

我希望创建一个大型项目,因此需要创建某种文件夹结构。我对Go很陌生,但是据我所知,要做的方法是创建软件包,对吗?我正在使用Go模块,我尝试了在这里和Google上找到的许多不同解决方案,但是似乎没有一个适合我。

我现在要做的就是将example.go文件中的导出功能导入main.go

文件夹结构如下:

client
example
---example.go
go.mod
go.sum
main.go
  1. 我已经使用go mod init创建了模块文件,请参见下面的第一个代码段
  2. 第二个代码段显示main.go标头的样子
  3. 第三段是具有我要导入功能的软件包
    module exampleapp
    go 1.12
    require (
        github.com/gin-gonic/contrib v0.0.0-20190408155029-b5986969cb50
        github.com/gin-gonic/gin v1.4.0
    )

package main
import (
    "net/http"
    "exampleapp/example"
)
    package example
    import (
        "net/http"
        "github.com/gin-gonic/gin"
    )

    func GetAllEmployees(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "pong",
        })
    }

在大多数情况下,当我尝试在main.go中添加程序包时,VSCode会自动删除该行,并且在main函数中显示未定义GetAllEmployees。我设法在删除软件包之前捕获了错误的软件包,它说-

"imported and not used: "exampleapp/example"
我在此处使用“ exampleapp / example”模块名称exampleapp会出错吗?我尝试了没有exampleapp和“ ./example/example”的情况,但是随后出现一个错误,提示它找不到路径模块。

我们将非常感谢您的帮助,因为我已经坚持了很长时间,并且无法弄清楚我在这里缺少什么。

1 个答案:

答案 0 :(得分:3)

应该是这样(main.go):

package main
import (
    "exampleapp/example"
)

func main() {
    example.GetAllEmployees(...)
}