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

作者:爱喝coffee的人 时间:2024-02-06 17:01:51 

import 认识

go的import有两种形式

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

第二种是Go Modules

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

在地址引用时出现错误。

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

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

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

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

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

go语言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语言import报错处理图文详解

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

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

在终端中输入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 的软件包目录中搜索导入。而不是在本项目中导入。

来源:https://blog.csdn.net/sinat_41902940/article/details/123718552

标签:go语言,import,报错
0
投稿

猜你喜欢

  • Python实现一个服务器监听多个客户端请求

    2022-10-18 15:32:14
  • python图片水印加密的几种处理小结

    2023-12-26 16:23:37
  • js特效,页面下雪的小例子

    2024-04-22 22:32:21
  • PHP iconv 解决utf-8和gb2312编码转换问题

    2024-04-29 13:56:58
  • 由浅入深讲解Javascript继承机制与simple-inheritance源码分析

    2024-05-10 14:06:50
  • Django rest framework基本介绍与代码示例

    2023-12-20 13:37:57
  • 如何在Python中妥善使用进度条详解

    2022-05-30 12:10:05
  • vant之van-list的使用及踩坑记录

    2023-07-02 16:48:41
  • 仿windows选项卡效果拾零

    2013-07-13 09:33:42
  • 关于go语言编码需要放到src 文件夹下的问题

    2023-07-03 07:34:00
  • python样条插值的实现代码

    2022-05-11 16:04:05
  • SQL Server 复制需要有实际的服务器名称才能连接到服务器

    2012-07-11 15:46:51
  • 三步实现Django Paginator分页的方法

    2022-09-22 20:15:31
  • Python记录详细调用堆栈日志的方法

    2023-11-16 17:20:57
  • Python使用Dash开发网页应用的方法详解

    2022-04-26 03:45:14
  • python神经网络Keras GhostNet模型的实现

    2022-05-16 17:19:42
  • golang中实现graphql请求的方法

    2024-02-19 16:21:18
  • 最具创意的广告牌全集

    2007-09-21 19:54:00
  • Golang收支记账程序详细编写过程

    2024-04-25 15:17:38
  • Javascript this 关键字 详解

    2024-06-07 15:51:18
  • asp之家 网络编程 m.aspxhome.com