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

Riv*_*vao 6 go

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

我现在想要的只是将 example.go 文件中的导出函数导入 main.go

文件夹结构如下:

client
example
---example.go
go.mod
go.sum
main.go
Run Code Online (Sandbox Code Playgroud)
  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
    )

Run Code Online (Sandbox Code Playgroud)
package main
import (
    "net/http"
    "exampleapp/example"
)
Run Code Online (Sandbox Code Playgroud)
    package example
    import (
        "net/http"
        "github.com/gin-gonic/gin"
    )

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

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

“已导入但未使用:”exampleapp/example”
在这里使用“exampleapp/example”模块名称exampleapp我错了吗?我在没有 exampleapp 和“./example/example”的情况下尝试过,但是我收到一个错误,说它找不到路径的模块。

帮助将不胜感激,因为我已经坚持了很长一段时间并且无法弄清楚,我在这里错过了什么。

Ser*_*hny 5

应该是这样的(main.go):

package main
import (
    "exampleapp/example"
)

func main() {
    example.GetAllEmployees(...)
}
Run Code Online (Sandbox Code Playgroud)