如何将另一个目录中的函数连接到Go/Echo?

huangapple go评论74阅读模式
英文:

How do I connect a function from another directory to Go/Echo?

问题

main.go文件中,你导入了lolo/viewsgithub.com/labstack/echo/v4两个包,并在main()函数中使用了views.F_count_private函数。然而,在count_private.go文件中,你也定义了一个名为F_count_private的函数,导致了重复声明的错误。

要解决这个错误并使得你可以在main()函数中使用F_count_private(...)函数,你可以采取以下两种方法之一:

  1. 修改count_private.go文件中的函数名:你可以将F_count_private函数重命名为其他不会与已有函数冲突的名称,例如F_count_private_new。然后在main.go文件中更新对应的函数调用。

  2. count_private.go文件中的函数移动到另一个文件:你可以将F_count_private函数移动到一个新的文件中,例如cat.go。然后在main.go文件中导入cat.go并更新对应的函数调用。

无论你选择哪种方法,都需要确保在main.go文件中正确引用了函数,并且没有重复声明的情况发生。这样就可以避免重复声明的错误,并且可以在main()函数中使用F_count_private(...)函数了。

英文:

Created a project with structure:

lolo
--views
----count_private.go
--go.mod
--go.sum
--logs.log
--main.go

Code in main.go

package main

import(
"lolo/views"

"github.com/labstack/echo/v4"
)

func main() {
e := echo.New()

e.GET("/f_count_private", views.F_count_private)

e.Logger.Fatal(e.Start(":1323"))
}

Code in count_private.go

package views

import(
"net/http"

"github.com/labstack/echo"
)

func F_count_private(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}

When running the code via the $ go run main.go command, an error is thrown:

# lolo/views
views\count_private.go:9:6: F_count_private redeclared in this block
        views\cat.go:7:6: other declaration of F_count_private

Can you please tell me how to get around the error and make it so that I can use the f_count_private(...) function from another file in main()?

答案1

得分: 1

views包中,你导入了"github.com/labstack/echo/v4"包。

main中,你使用了来自github.com/labstack/echo/v4e.GET,而在views包中,你导入了"github.com/labstack/echo"

这些是Go语言中的不同包,所以FCountPrivate定义中的echo.Context类型与github.com/labstack/echo/v4包中的HandlerFunc类型中使用的Context类型是不同的。

回复 @user:371023

英文:

In the views package you import the "github.com/labstack/echo/v4" package.

In main you use e.GET from github.com/labstack/echo/v4, and in the views package you import "github.com/labstack/echo"

These are different packages for go, so the echo.Context type in the FCountPrivate definition is different from the Context type used in the HandlerFunc type from the github.com/labstack/echo/v4 package.

Response @user:371023

huangapple
  • 本文由 发表于 2022年8月20日 22:05:29
  • 转载请务必保留本文链接:https://go.coder-hub.com/73427353.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定