go中import包的大坑解决方案

目录
  • 方案一:使用GOROOT和GOPATH
  • 方案二:使用go.mod

最近开始使用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包坑内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 对Golang import 导入包语法详解

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用: fmt.Println( "我爱北京天安门" ) fmt 是 Go 的标准库,它其实是去 GOROOT 下去加载该模块,当然 Go 的 import 还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" // 当前文件同一目录的 model 目录

  • Go基础教程系列之import导入包(远程包)和变量初始化详解

    import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的. 假如go的安装目录为/usr/local/go,也就是说GOROOT=/usr/local/go,而GOPATH环境变量GOPATH=~/mycode:~/mylib,那么要搜索net

  • 解决goland 导入项目后import里的包报红问题

    解决办法: 1.Goland--->Preferences...--->Go--->GOPATH--->Project GOPATH下添加命令行go env下的GOPATH值,自行修改自己的Project GOPATH 2.正常情况下我们不需要自己去处理外部包的代理,但是也有可能就是你不经意之间做了修改,这边也是通过setting进行配置: 补充:GOLAND 导入项目后import里的包报红,以及$GOPATH/go.mod exists but should not 首先 im

  • golang import自定义包方式

    1.初探 刚开始接触go时,以为import自定义包与Java工程类似,在非GOPATH的路径中新建了一个go项目HelloGo,如下: 接下来,利用beego的bee工具新建了另一个项目helloapi,如下: 现在,想在helloapi项目中调用HelloGo项目的函数,通过import引入"HelloGo",编辑器中一直提示无法引用,即使把HelloGo添加到左下角的GOPATH[helloapi]中,也没有效果. 具体如下: 问题出在HelloGo项目的路径上,因为其不在系统定

  • Golang import 导入包语法及一些特殊用法详解

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用: fmt.Println( "我爱我们" ) fmt 是 Go 的标准库,它其实是去 GOROOT 下去加载该模块,当然 Go 的 import 还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" // 当前文件同一目录的 model 目录,但是

  • Golang import本地包和导入问题相关详解

    1 本地包声明 包是Go程序的基本单位,所以每个Go程序源代码的开始都是一个包声明: package pkgName 这就是包声明,pkgName 告诉编译器,当前文件属于哪个包.一个包可以对应多个*.go源文件,标记它们属于同一包的唯一依据就是这个package声明,也就是说:无论多少个源文件,只要它们开头的package包相同,那么它们就属于同一个包,在编译后就只会生成一个.a文件,并且存放在$GOPATH/pkg文件夹下. 示例: (1) 我们在$GOPATH/目录下,创建如下结构的文件夹

  • 解决golang在import自己的包报错的问题

    原因: 使用git clone项目后,项目根路径是小写英文名称,比如cmdbapi,但是项目里面的import导入自己的相关包时,红色报错 解决: 把项目名称改写成import导入包的名称,即cmdbApi.当然也可以将import导入包改写成小写. 补充:golang之import导入包的一些特殊用法 我们学习了golang之后,晓得关键字import是go的包导入语法,而且我们的第一个程序通常都需要输出hello world. 示例如下: import( "fmt" ) fmt.P

  • go中import包的大坑解决方案

    目录 方案一:使用GOROOT和GOPATH 方案二:使用go.mod 最近开始使用Go/GoLand 在import 自定义包时出现各种状况,措手不及,大概在网上找了解决方法,几乎没说的清楚的(可能是我个人理解力比较差哈哈) 个人喜好加上网上其他人给的解决方法实在是那个啥,所以 图文方式解决问题 才能事半功倍. windows环境下装的Goland,Mac及其他linux系统参考,了解到本质后 万变不离其宗. 方案一:使用GOROOT和GOPATH (以我本机为准举例讲讲各种方法) GOROO

  • Maven中jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法. 一.Maven中jar包冲突产生原因 MAVEN项目运行中如果报如下错误: Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException 十有八九是Maven jar包冲突造成的.那

  • pip已经安装好第三方库但pycharm中import时还是标红的解决方案

    已经pip安装好第三方库了,但是在pycharm中import还是标红,像下图: 我记得上次重装系统,出现这种情况的时候,我重启一下pycharm就行了(但是感觉pycharm一开一关很费时间) 还有一个解决办法: 点击File --> Settings --> Project --> Project interpreter--> 双击pip那一栏 在搜索框那一栏输入你导包标红的包 --> 再在左下角点击Install Package,直到出现Package '包名' ins

  • spring注解在自定义jar包中无法被扫描的解决方案

    spring注解在自定义jar包中无法被扫描 前两天,一朋友在开发的时候遇到了一个问题向我求助, service服务为第三方提供的服务里面有spring注解并将service 打成jar包中,使用maven引入. 使用new可以创建,但是使用autowire无法注入提示信息如下图 报错信息 这类问题在开发中一直是我们最不愿意看到的,乍一看,感觉挺对,还挺有道理.但是就是更想要的结果对不上. 我当时给出的判断autowire的类重名导致注入失败,建议用配合使用qualifier或者 使用resou

  • Pycharm中import torch报错的快速解决方法

    Pycharm中import torch报错 问题描述: 今天在跑GitHub上一个深度学习的模型,需要引入一个torch包,在pycharm中用pip命令安装时报错: 于是我上网寻求解决方案,试了很多都失败了,最后在:Anne琪琪的博客中找到了答案,下面记录一下解决问题的步骤: 1.打开Anaconda prompt执行下面命令: conda install pytorch-cpu torchvision-cpu -c pytorch 等待运行结束. 2. 测试torch是否安装成功 impo

  • 解决eclipse中maven引用不到已经存在maven中jar包的问题

    之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放jar包的地方.但是,在eclipse中的maven仓库中 搜索不到本地仓库中的jar包. 原因是因为maven中的本地仓库的index索引没有更新,导致在eclipse的maven插件中搜索不到. 解决方案: 在eclipse中打开菜单 window-> show view –> other –> Maven -> maven repositories 打开之后

  • python中import学习备忘笔记

    前言 在python的模块有两种组织方式,一种是单纯的python文件,文件名就是模块名,一种是包,包是一个包含了若干python文件的目录,目录下必须有一个文件__init__.py,这样目录名字就是模块名,包里的python文件也可以通过包名.文件名的方式import import语法 import语法有两种 1.直接import模块 import Module import Module as xx 2.从模块import对象(下级模块,类,函数,变量等) from Module impo

  • SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案

    最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS下运行的时候,IIS crash.之前的连接是没问题的,后网上找了资料,根据牛人所说的方案解决了. 1. Exception message 已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确.) ---> System.ComponentModel.Win32Except

  • java中处理socket通信过程中粘包的情况

    这两天学习了java中处理socket通信过程中粘包的情况,而且很重要,所以,今天添加一点小笔记. 处理粘包程序是客户端的接受消息线程: 客户端: import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Reader; import java.net.Socket; impo

  • 浅析python中numpy包中的argsort函数的使用

    概述 argsort()函数在模块numpy.core.fromnumeric中. 在python中排序数组,或者获取排序顺序的时候,我们常常使用numpy包的argsort函数来完成. 如下图所示,是使用python获取到数组中的排序的顺序. data=numpy.array([1,2,3,4,5]) datasort=numpy.argsort(data) datasort Out[39]: array([0, 1, 2, 3, 4], dtype=int64) data Out[40]:

随机推荐