当前位置: 首页 > 面试题库 >

Go中的相对进口

赵飞语
2023-03-14
问题内容

我有一个具有以下目录结构的go Project

utils(pkg)
   | auth.go (has a function names test1)
controllers(pkg)
   | login.go (has a function names test2)

我正在尝试从login.go访问功能test1。这是我所做的

import "../utils"

func test2(c *gin.Context) bool{
      utils.test1()
}

但是我总能得到Unresolved reference test1。我是新来的。谁能帮我得到这个错误的原因?


问题答案:

没有,Go中没有相对导入。
您应该考虑使用GOPATH来使用Abs路径:

GOPATH环境变量指定工作空间的位置。在开发Go代码时,很可能需要设置唯一的环境变量。首先,创建一个工作区目录并相应地设置GOPATH。参见: https
//golang.org/doc/code.html#GOPATH

导入路径

导入路径是唯一标识软件包的字符串 。包的导入路径与其在工作空间内或在远程存储库中的位置相对应(如下所述)。

标准库中的软件包具有简短的导入路径,例如“ fmt”和“ net /
http”。对于您自己的软件包,您必须选择一个基本路径,该基本路径不太可能与将来向标准库或其他外部库中添加的内容冲突。

如果将代码保存在某个源存储库中,则应使用该源存储库的根作为基本路径。
例如,如果您在github.com/user上有一个GitHub帐户,则应该是您的基本路径

请注意,在构建代码之前,无需将代码发布到远程存储库。这是组织代码的好习惯,就像您有一天要发布代码一样。实际上,您可以选择任意路径名,只要它是标准库和更大的Go生态系统所独有的即可。

例:

本示例假定您已GOPATH=/goworkdir在OS环境中进行设置。

文件: goworkdir/src/project1/utils/auth.go

package utils

func Test1() string {
    return "Test1"
}

文件: goworkdir/src/project1/controllers/login.go

package controllers

import "project1/utils"

func Test2() string {
    return utils.Test1()
}

文件: goworkdir/src/project1/main.go

package main

import (
    "fmt"
    "project1/controllers"
)

func main() {
    fmt.Println(controllers.Test2())
}

现在,如果您go run main.go应该看到输出:

Test1


 类似资料:
  • 我来过这里: http://www.python.org/dev/peps/pep-0328/ http://docs.python.org/2/tutorial/modules.html#软件包 Python包:相对导入 Python相对导入示例代码不工作 python 2.5中的相对导入 Python中的相对导入 Python:禁用相对导入 还有很多我没有复制的网址,有些在SO上,有些在其他站

  • 我来过这里: http://www.python.org/dev/peps/pep-0328/ http://docs.python.org/2/tutorial/modules.html#包 Python包:相对导入 Python相对导入示例代码不起作用 python 2.5中的相对导入 Python中的相对导入 Python:禁用相对导入 还有很多URL我没有复制,有些在SO上,有些在其他网站

  • 问题内容: 想象一下这个目录结构: 我正在编码,我需要从中导入一些东西。我该怎么办? 我尝试过,但是得到了“未打包的相对导入尝试”。 我四处搜寻,但只发现骇客。有没有一种干净的方法? 问题答案: 每个人似乎都想告诉你应该做什么,而不仅仅是回答问题。 问题是你通过将作为参数传递给解释器而将模块作为运行。 从PEP 328: 相对导入使用模块的属性来确定该模块在包层次结构中的位置。如果模块的名称不包含

  • 问题内容: 我正在构建一个简单的工作助手脚本,该脚本会将代码库中的几个模板文件复制到当前目录。但是,我没有存储模板的目录的绝对路径。我确实有一个来自脚本的相对路径,但是当我调用该脚本时,会将其视为相对于当前工作目录的路径。有没有一种方法可以指定此相对URL来自脚本的位置? 问题答案: 在具有脚本的文件中,你想要执行以下操作: 这将为你提供要查找的文件的绝对路径。请注意,如果你使用的是,则应该改用其

  • 问题内容: 这是一个示例:全角菜单作为表格,而ul-s作为下拉菜单。 在ie和Opera中可以正常工作,但是在整个屏幕上都无法正常显示Firefox下拉菜单uls! 有什么帮助吗? 问题答案: 不适用于表格单元格(或)。 ‘position:relative’对table-row-group,table-header-group,table-footer- group,table-row,tabl

  • 问题内容: 大家好-我正在用Python中的相关知识来表达自己的观点。我已经阅读了30篇文档,并在SO和其他论坛上阅读了很多帖子-似乎还是行不通。 我的目录结构目前看起来像这样 我希望expander.py和language_id.py可以访问功能模块。我运行python main.py,可以从components.expander import 和components.language_id i