登录
首页 >  Golang >  Go问答

版本化的包中如何使用 Go 的导入路径

来源:stackoverflow

时间:2024-02-07 20:00:24 318浏览 收藏

本篇文章给大家分享《版本化的包中如何使用 Go 的导入路径》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我有点好奇 golang 如何解析命名导入。

在此示例中,我将 echo 作为我的应用程序包。

package main

import (
    "net/http"

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

func main() {
    e := echo.new()
    e.get("/", func(c echo.context) error {
        return c.string(http.statusok, "hello, world!")
    })
    e.logger.fatal(e.start(":1323"))
}

import 行所示,echo 实际上是由它的“v4”版本引用的,但 go 可以解析为“echo”。 我研究了 echo 的 repo,但没有找到任何关于 go 如何解决这个问题的明确内容。

ps:过去我曾将它与别名一起使用,例如:

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

但这似乎是一个解决方法。


正确答案


Go 文件的第一行使用 package 指令声明包名称。这是 import 在不是别名导入时解析为的名称。当您需要消除具有相同包名称但不同导入路径的多个包之间的歧义时,可以使用别名导入。

go.mod 文件保存了 Go 包的导入路径(对于 echo 来说是 github.com/labstack/echo/v4)。正如 JimB 所说,包名称不需要与导入路径相对应,只是按照惯例这样做。

rsc.io/quote(源代码位于https://github.com/rsc/quote) 解释了 Go 包版本控制和导入。您还可以查看 Russ Cox 解释 Go 中的包版本控制的博客文章

好了,本文到此结束,带大家了解了《版本化的包中如何使用 Go 的导入路径》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>