go中import包的大坑解决方案

 更新时间:2022年06月07日 15:53:30   作者:剑神卓不凡  
最近开始使用Go/GoLand 在import 自定义包时出现各种状况,本文就介绍一下go中import包的大坑解决方案,具有一定的参考价值,感兴趣 可以了解一下

最近开始使用Go/GoLand 在import 自定义包时出现各种状况,措手不及,大概在网上找了解决方法,几乎没说的清楚的(可能是我个人理解力比较差哈哈)

个人喜好加上网上其他人给的解决方法实在是那个啥,所以 图文方式解决问题 才能事半功倍。

windows环境下装的Goland,Mac及其他linux系统参考,了解到本质后 万变不离其宗。

方案一:使用GOROOT和GOPATH

(以我本机为准举例讲讲各种方法)

  • GOROOT:就是Go的安装目录(C:\Go),(类似于java的JDK),里面有bin目录(C:\Go\bin)
  • GOPATH: 是我们的工作空间,保存go项目代码和第三方依赖包 (F:\Go)
  • GOPATH可以设置多个,其中,第一个将会是默认的包目录,使用go get下载的包都会在第一个path中的src目录     下,使用go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件

 使用GOPATH时,Go会在以下为目录中搜索包:

  • GOROOT/src:Go标准库
  • GOPATH/src:应用自身代码和第三方依赖的代码

该方法对目录架构要求比较严格 例如我的 F:\Go\src\awesomeProject1, 即必须创建在 GOPATH/src

注意说明:sum1包内的函数要大写,这种方式是严格按照 GOROOT和GOPATH的方式,例如main包import  "awesomeProject1/sum1"

包就会在  $GOPATH/src(Go/src/awesomeProject1/sum1)路径下找到。

方案二:使用go.mod    

通常大家不喜欢将代码放在 $GOPATH/src 下面,此时import pkg 时,就要用到go.mod

 从Go1.11版本之后,已经不再推荐使用GOPATH来构建应用了。也就是说GOPATH被认为时废弃的垃圾的做法。

当你开启了GO111MODULE=on,仍然使用GOPATH模式的方法,在引入自定义模块时会报错。

用Go modules创建出来的工程中会包含一个go.mod的文件,工程的位置/路径随便

 1. 设置环境变量     go env -w GO111MODULE=on      

2.   打上这个小 对勾。

3. 执行 go mod init <module name> 。  <module name>非必填,不填的话就会采用项目文件的名称。

到此这篇关于go中import包的大坑解决方案的文章就介绍到这了,更多相关go import包坑内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang中select语句的简单实例

    golang中select语句的简单实例

    Go的select语句是一种仅能用于channl发送和接收消息的专用语句,此语句运行期间是阻塞的,下面这篇文章主要给大家介绍了关于golang中select语句的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • grpcurl通过命令行访问gRPC服务

    grpcurl通过命令行访问gRPC服务

    这篇文章主要为大家介绍了grpcurl通过命令行访问gRPC服务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go 语言使用goroutine运行闭包踩坑分析

    Go 语言使用goroutine运行闭包踩坑分析

    这篇文章主要介绍了Go 语言使用goroutine运行闭包踩坑解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Golang Mutex实现互斥的具体方法

    Golang Mutex实现互斥的具体方法

    Mutex是Golang常见的并发原语,在开发过程中经常使用到,本文主要介绍了Golang Mutex实现互斥的具体方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-04-04
  • Go处理包含多种引号的字符串的几种方法

    Go处理包含多种引号的字符串的几种方法

    在Go中,有几种方式可以处理包含多种引号的字符串,以确保代码的可读性和正确性,本文将给大家详细介绍了这几种处理方式,并通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-04-04
  • Go语言基于HTTP的内存缓存服务的实现

    Go语言基于HTTP的内存缓存服务的实现

    这篇文章主要介绍了Go语言基于HTTP的内存缓存服务,本程序采用REST接口,支持设置(Set)、获取(Get)和删除(Del)这3个基本操作,同时还支持对缓存服务状态进行查询,需要的朋友可以参考下
    2022-08-08
  • 利用Go语言实现简单Ping过程的方法

    利用Go语言实现简单Ping过程的方法

    相信利用各种语言实现Ping已经是大家喜闻乐见的事情了,网络上利用Golang实现Ping已经有比较详细的代码示例,但大多是仅仅是实现了Request过程,而对Response的回显内容并没有做接收。而Ping程序不仅仅是发送一个ICMP,更重要的是如何接收并进行统计。
    2016-09-09
  • 解决 Golang VS Code 插件下载安装失败的问题

    解决 Golang VS Code 插件下载安装失败的问题

    这篇文章主要介绍了解决 Golang VS Code 插件下载安装失败,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • go开发alertmanger实现钉钉报警

    go开发alertmanger实现钉钉报警

    本文主要介绍了go开发alertmanger实现钉钉报警,通过自己的url实现alertmanager的钉钉报警,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Go常用技能日志log包创建使用示例

    Go常用技能日志log包创建使用示例

    这篇文章主要为大家介绍了Go常用技能日志log包创建使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论