目录
一、导入第三方包
1.执行命令
2.查看go环境变量参数
3.查看go.mod文件的变化情况
二、程序里如何import
1. import依赖包
2. 程序编写
本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。下面将go get命令描述如下:
1. go get 命令
命令用于从远程代码仓库(比如 Github )上下载并安装代码包。注意,go get 命令会把当前的代码包下载到 $GOPATH 中的第一个工作区的 src 目录中,并安装。
go 1.17之后go get只下载源码,并将依赖添加到go.mod,并不会安装。安装油go install完成。
2. go run 命令
专门用来运行命令源码文件的命令,一般用来运行单个文件
3. go build命令
主要是用于测试编译。编译某个包或者项目,在当前目录下生成可执行文件
4. go install 命令
编译并安装代码包或者源码文件的。
以上命令参考文章,包括其他命令:go fmt , go version ,go info, go clean , go test, go doc , go env, go list, go fix等
go run、build、install、get的原理和区别 - 知乎
以concurrent_map为例,github地址https://github.com/orcaman/concurrent-map/blob/v2.0.1/concurrent_map.go
需要将concurrent_map包引入工程,需要在我们的项目目录下,也就是go.mod同级目录下
go get -u "github.com/orcaman/concurrent-map" #-u参数表示最新的版本
执行结果分两种情况
1.1.执行成功提示
# go get -u "github.com/orcaman/concurrent-map"
go: downloading github.com/orcaman/concurrent-map v1.0.0
go: added github.com/orcaman/concurrent-map v1.0.0
1.2. 执行失败提示
go: github.com/orcaman/[email protected]: reading
https://mirrors.aliyun.com/goproxy/github.com/orcaman/concurrent-map/@v/v2.0.1.info: 404 Not Found
或者报错,提示timeout
这种情况下是因为环境变了GOPROXY参数配置的代理地址不可访问,需要修改GOPROXY,使用国内
export GOPROXY=https://goproxy.cn
或者
export GOPROXY=https://mirrors.aliyun.com/goproxy/
建议将以上参数添加到操作系统环境变量中。
go env
然后继续执行命令,发现成功即可。
# go get -u "github.com/orcaman/concurrent-map"
go: downloading github.com/orcaman/concurrent-map v1.0.0
go: added github.com/orcaman/concurrent-map v1.0.0
module golearning
go 1.20
require github.com/orcaman/concurrent-map v1.0.0 // indirect
从中看到多了一行依赖配置
还是继续以concurrent_map为例,执行为go get 命令后已经下载并更新依赖,程序里需要通过import引入
import (
cmap "github.com/orcaman/concurrent-map"
"testing"
)
cmap是包的别名,由于包名太长,程序通过cmap访问接口方便快捷。
func TestRemotePckageInvoke(t *testing.T) {
userMapping := cmap.New()
userMapping.Get("KeyName")
}
参考资料
go run、build、install、get的原理和区别 - 知乎