【GO】项目import第三方的依赖包

目录

一、导入第三方包

1.执行命令

2.查看go环境变量参数

3.查看go.mod文件的变化情况

二、程序里如何import 

1. import依赖包

2. 程序编写


本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。下面将go get命令描述如下:

首先将官网的Go 命令文档路径贴一下:

Command go - The Go Programming Language

1. go get 命令

命令用于从远程代码仓库(比如 Github )上下载并安装代码包。注意,go get 命令会把当前的代码包下载到 $GOPATH 中的第一个工作区的 src 目录中,并安装。

go 1.17之后go get只下载源码,并将依赖添加到go.mod,并不会安装。安装油go install完成。

2. go run 命令

专门用来运行命令源码文件的命令,一般用来运行单个文件

3. go build命令

主要是用于测试编译。编译某个包或者项目,在当前目录下生成可执行文件

go build 用于编译导入的包,包括import导入的包,以及这些包所依赖的其他关系包,但是并不会将编译后的结果进行安装。

go build 所在包为main 包时

若go build 后跟好几个.go文件,编译时会认为这几个文件是在同一个包中,且已第一个.go 文件名为输出结果.(比如:go build ed.go rx.go 输出为ed 或 ed.exe)
如果go build 后跟一个目录比如:go build /unix/sam 编译结果输出为: sam或sam.exe
go build 多个包或非main 包时,会丢弃编译结果,只检查是否可以执行编译

go build 编译包时,会忽略“_test.go”结尾的文件(即测试文件)

如果go build 后不跟任何参数则会编译当前目录所对应的代码包,生成目录名或目录名.exe 可执行文件

go build -o : 比如再main包目录(project)下,go build -o project2.exe ,则生成的结果不是project.exe 而是 project2.exe 就是说生成的可执行文件将会写入到你指定的文件名中

go build -i:默认不写 -i 情况下,编译后的.a 文件是不会保存也不会安装到 pkg 目录下的windows_amd64 目录中,但是只要加上 -i 编译后的.a 文件就会自动保存到pkg 目录中,就是说:标记 -i 会使 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同级目录下

1.执行命令

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/

建议将以上参数添加到操作系统环境变量中。 

2.查看go环境变量参数

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

3.查看go.mod文件的变化情况

module golearning

go 1.20

require github.com/orcaman/concurrent-map v1.0.0 // indirect

从中看到多了一行依赖配置

二、程序里如何import 

还是继续以concurrent_map为例,执行为go get 命令后已经下载并更新依赖,程序里需要通过import引入

1. import依赖包

import (
	cmap "github.com/orcaman/concurrent-map"
	"testing"
)

cmap是包的别名,由于包名太长,程序通过cmap访问接口方便快捷。

2. 程序编写

func TestRemotePckageInvoke(t *testing.T) {
	userMapping := cmap.New()
	userMapping.Get("KeyName")
}

参考资料

go run、build、install、get的原理和区别 - 知乎

猜你喜欢

转载自blog.csdn.net/smallbirdnq/article/details/134277011
今日推荐