go语言import报错处理图文详解

 更新时间:2023年04月28日 10:11:52   作者:爱喝coffee的人  
今天本来想尝试一下go语言中公有和私有的方法,结果import其他包的时候直接报错了,下面这篇文章主要给大家介绍了关于go语言import报错处理的相关资料,需要的朋友可以参考下

import 认识

go的import有两种形式

第一种是GOPATH下项目文件管理

第二种是Go Modules

初学状态我用的vscode.在两个文件夹中调用全局变量。

在地址引用时出现错误。

通过查询知道了两种方法之间的区别就在与GO111MODULE的设置问题。

若是用第一种方法就把变量值设置为off或者auto。

若是用第二种方法就把变量值值设置为on。

然后就会看到import引用的地址爆红。

运行显示
project01\main\demo6\main\main.go:6:2: package go_code/project01/main/demo6/model1 is not in GOROOT (E:\go\src\go_code\project01\main\demo6\model1)

出现这种情况就是使用了Go Modules方式。需要在使用的工作空间设置一个go.mod的文件。

在终端中输入go mod init 模块名

go mod tidy

如果用auto模式,那就是让系统自己选择是那种方式。把项目移动到$GOPATH/src外

进入目录,运行 go mod init + 模块名称

go build 或者 go run 一次。

初学者,要想解决爆红问题,直接在环境变量中吧on或者auto改为off就可以了。

补充:Go语言不支持相对路径import导入包

Go是一门非常简洁,且工程化完备的现代化开发语言。但在 go mod 模块开发时,不像python那样,import不支持相对路径导入。本地包必须使用全路径。本文尝试探索此问题。

问题的产生

在github上fork一个开源项目之后,想要修改部分代码后供公司项目使用。发现需要修改源项目中的所有内部import,例如开源模块 M中存在P1、P2等package, 其中P2 import P1的import路径为 “github.com/someone/M/P1”,而我fork的分支里则是需要import 自己修改后的 "github.com/myself/M/P1",与此类似,整个开源项目里很多这种地方都需要修改。

所以引出了对相对路径导入的思考,有没有什么办法支持相对路径的导入而方便fork之后的差异开发呢?

原因

从以下几个问题可以看出,对于Go语言来说,包相对路径的引入,并不是一个好的方案:

  • 会与官方标准包的导入相混淆
  • 增加相对导入包的软件管理难度
  • 影响了 go get 命令的使用
  • 不方便自动生成Go开发标准文档

相对路径导包示例:

import(  
     "./package1"      
     "./package2"      
     "./package3"
)

在 go mod 开发模式下,相对路径的导包方式不支持。会报错误:
local import "./package1" in non-local package

相对路径导入本地包,会在 GOPATH 的软件包目录中搜索导入。而不是在本项目中导入。

总结

到此这篇关于go语言import报错处理的文章就介绍到这了,更多相关go语言import报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Go语言中的监视器模式与配置热更新

    详解Go语言中的监视器模式与配置热更新

    这篇文章主要为大家详细介绍了Go语言中的监视器模式与配置热更新的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Go语言应用闭包之返回函数

    Go语言应用闭包之返回函数

    这篇文章主要介绍了Go语言应用闭包之返回函数,对于非常底层的纯 Go 语言代码或者包而言,在各个操作系统平台上的可移植性是非常强的,只需要将源码拷贝到相应平台上进行编译即可,或者可以使用交叉编译来构建目标平台的应用程序,需要的朋友可以参考下
    2023-07-07
  • Go类型安全的HTTP请求示例详解

    Go类型安全的HTTP请求示例详解

    这篇文章主要为大家介绍了Go类型安全的HTTP请求示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go语言生成UUID的利器(github.com/google/uuid)

    Go语言生成UUID的利器(github.com/google/uuid)

    UUID是确保每个元素唯一性的重要工具,Go语言虽然在标准库中没有直接提供UUID生成功能,但可以通过安装github.com/google/uuid库来实现,本文就来介绍一下,感兴趣的可以了解一下
    2024-11-11
  • 解决golang gin框架跨域及注解的问题

    解决golang gin框架跨域及注解的问题

    这篇文章主要介绍了解决golang gin框架跨域及注解的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Go语言通道之无缓冲通道与缓冲通道详解

    Go语言通道之无缓冲通道与缓冲通道详解

    通道是一种特殊的数据结构,可以在协程之间进行传递数据,从而实现协程之间的通信和同步,本文就来和大家讲讲Go语言通道中的无缓冲通道与缓冲通道吧
    2023-06-06
  • Goland字符串格式化样式中“\r“的作用详解

    Goland字符串格式化样式中“\r“的作用详解

    这篇文章主要介绍了Goland字符串格式化样式中“\r“的作用,"\r"起的作用是回到行首,当前控制台输出,输出完以后回到当前行的行首,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Goland的设置与配置全过程

    Goland的设置与配置全过程

    这篇文章主要介绍了Goland的设置与配置全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • go-python 库使用应用案例

    go-python 库使用应用案例

    本文深入探讨了如何使用Go-Python库进行跨语言编程,以及在实际应用中的各种技巧和应用案例,在结语中,我们将对Go-Python库的使用方法与技巧进行总结,并展望Go与Python混合编程的未来发展
    2024-03-03
  • Go编程库Sync.Pool用法示例详解

    Go编程库Sync.Pool用法示例详解

    这篇文章主要为大家介绍了Go编程库Sync.Pool用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论