• 【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.执行成功提示

    1. # go get -u "github.com/orcaman/concurrent-map"
    2. go: downloading github.com/orcaman/concurrent-map v1.0.0
    3. go: added github.com/orcaman/concurrent-map v1.0.0

    1.2. 执行失败提示

    1. go: github.com/orcaman/concurrent-map@v2.0.1: reading
    2. https://mirrors.aliyun.com/goproxy/github.com/orcaman/concurrent-map/@v/v2.0.1.info: 404 Not Found 

     或者报错,提示timeout

    这种情况下是因为环境变了GOPROXY参数配置的代理地址不可访问,需要修改GOPROXY,使用国内

    1. export GOPROXY=https://goproxy.cn
    2. 或者
    3. export GOPROXY=https://mirrors.aliyun.com/goproxy/

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

    2.查看go环境变量参数

    go env

    然后继续执行命令,发现成功即可。

    1. # go get -u "github.com/orcaman/concurrent-map"
    2. go: downloading github.com/orcaman/concurrent-map v1.0.0
    3. go: added github.com/orcaman/concurrent-map v1.0.0

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

    1. module golearning
    2. go 1.20
    3. require github.com/orcaman/concurrent-map v1.0.0 // indirect

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

    二、程序里如何import 

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

    1. import依赖包

    1. import (
    2. cmap "github.com/orcaman/concurrent-map"
    3. "testing"
    4. )

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

    2. 程序编写

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

    参考资料

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

  • 相关阅读:
    LibreOJ - 6053(积性函数前缀和,pn筛角度)
    这个项目获2022世界物联网博览会三新成果奖!
    Redis数据类型之Set的使用
    学内核之八:Linux内核的smp_processor_id是如何实现的
    DDS::core::Entity
    Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸
    应届生必读:Java真实项目的开发流程和常用工具
    C#:实现Google S2算法(附完整源码)
    台式电脑怎么格式化重装系统
    HTTPS、SSL/TLS,HTTPS运行过程,RSA加密算法,AES加密算法
  • 原文地址:https://blog.csdn.net/smallbirdnq/article/details/134277011