当前位置: 首页 > news >正文

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

目录

一、导入第三方包

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同级目录下

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/concurrent-map@v2.0.1: 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 golearninggo 1.20require 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的原理和区别 - 知乎

http://www.lryc.cn/news/222084.html

相关文章:

  • 【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接
  • 电脑软件:推荐一款电脑多屏幕管理工具DisplayFusion
  • 免费好用的网页采集工具软件推荐
  • 6.ELK之Elasticsearch嵌套(Nested)类型
  • RefConv: 重参数化的重新聚焦卷积(论文翻译)
  • 指令重排序
  • 【Head First 设计模式】-- 观察者模式
  • JavaWeb篇_01——JavaEE简介【面试常问】
  • QtC++与QRadioButton详解
  • 移远EC600U-CN开发板 day01
  • 【C/C++】什么是POD(Plain Old Data)类型
  • 注册虾皮买家号需要哪些资料?
  • 小腿筋膜炎怎么治疗最有效
  • After Effects 2024 v24.0.2(AE2024)
  • 自己实现一个自动检测网卡状态,并设置ip地址
  • 【Linux】进程程序替换
  • 项目构建工具maven的基本配置+idea 中配置 maven
  • 【解密ChatGPT】:从过去到未来,揭示其发展与变革
  • 系统架构设计】计算机公共基础知识: 5 数学与经济管理
  • Visual Studio 2019光标变成灰色方块问题
  • C++ http协议POST body raw 字段向服务器发送请求
  • 通过migrate命令实现两个redis实例之间的数据迁移
  • Unity 判断两个UI是否相交
  • swoole process 消息通信
  • uniapp跳转方式
  • 六大排序算法:插入、选择、冒泡、快排、希尔、归并
  • 短信登录实现(黑马点评为例)
  • 【uniapp】签名组件,兼容vue2vue3
  • 初步利用Ansible实现批量服务器自动化管理
  • 网络安全和隐私保护技术