gopath、vendor、dep 、go module 的区别

  • gopath:要设置环境变量,然后执行执行 go install进行安装
  • vendor: 将第三方依赖完全和工程整合且本地化,构建项目速度快,但冗余度很高。很万能的方法
  • dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系。
  • go module:执行命令 go build && go mod tidy ,下载依赖并整理。

go get 下载过慢

经过测试,还是设置代理goproxy比较靠谱:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

go get 引包引不进去

其实在Go 1.13版本之后 越来越多的开源项目已经支持Go Modules 所以导致了现在基本上都是使用Go Modules来进行包管理了
go module 的设计思想是改变原有的基于仓库管理 golang 包的模式,而是通过更加灵活的“模块”来进行包管理,每个包含 go.mod 文件的目录都是一个模块,从而实现:

  • 一个仓库包含一个或者多个模块
  • 一个模块包含一个或多个包
  • 一个包包含该目录下的所有 go 源码文件

好了话不多B 直接说问题

import 包老显示红色
Golang 包相关问题-小白菜博客
解决方法
通过修改goland 中的 go modules

自定义包引入失败

这个和上面的解决方法一样
开启了 go modules 引包就变成了从目录引入 本人理解 有点像从gopath的src引入
Golang 包相关问题-小白菜博客
就像这样
这种最好的方式就是建立github.com 的文件夹 然后层层延申,这样也比较清楚
还有一种方法
直接用 相对路径引入包

即这样的方式引入包。

包的匿名引用和别名引用

话不多B
直接上代码

匿名
如果只希望导入包,而不使用包内部的数据时,可以使用匿名导入包。

import _ "包的路径"

别名
在导入包名的时候,我们还可以为导入的包设置别名。通常用于导入的包名太长或者导入的包名冲突的情况。

import 别名 "包的路径"

有时候在编译和下载库的时候会提示 Permission denied

这种情况大多数在linux 和mac下才会出现
执行如下命令

chmod -R 777 go目录