文档章节

golang 第三方包的使用总结

科陆李明
 科陆李明
发布于 07/23 22:16
字数 840
阅读 30
收藏 3

golang 第三方包的安装的方法:

1. go get 安装

# 比如要安装 "github.com/gin-gonic/gin"
$ go get github.com/gin-gonic/gin
  • 注意:执行go get 命令需要先安装git命令,并配置git全局变量。

2. 源码包安装

由于国内网络问题,很多时候go get命令并不能安装,所以就需要手动下载源码包,然后拷贝到$GOPATH/sr/ 目录下

# 比如要安装"github.com/golang/protobuf/proto"
# 去github.com/golang/protobuf下载源码包,
# 拷贝到 $GOPATH/src/github.com/golang/protobuf

$ cd $GOPATH/src/github.com/golang/protobuf
$ go install
  • 注意:第三包安装完成后,应用程序导入包时还是使用的源码,而非 $GOPATH/pkg/ 下的 .a文件。如何能像标准包fmt一样直接使用pkg,还需进一步研究。
  • 注意:上面直接写的$GOPATH,在 GOPATH 只有一个目录的时候可以这样写,按tab键就会自动切换为实际目录,如果 GOPATH 配置了多个目录则要输入具体的目录。

golang 使用第三方包

使用方式

在应用程序中直接impor即可

// 比如要使用  "github.com/gin-gonic/gin"
import "github.com/gin-gonic/gin"
  • 注意:GO 和Java 不同的是:所有import的包必须在%GOPATH路径下,如果直接导入源码路径下的包,编译会报错。因为GO只会在$GOPATH 下找包的依赖,而不会在当前工程下找。

golang 增加环境变量

很多时候我们并不希望自己的工程代码和下载的第三方包代码混在一起,这时候就想自己建一个目录,但是我们知道,执行go install 的时候,必须在 $GOPATH 路径下,所以我们要将自己的自己新建的目录加入到$GOPATH中。比如我在/home/jerry/go/ 下面建了src/ 目录,里面放的是我自己写的包 myMax/myMax.go

# 使用 vim 打开 ~/.bash 文件
$ vim ~/.bash
# 在里面添加刚才自己新建的工作目录
export GOPATH=$GOPATH:/home/jerry/go/
# 退出 vim 并让更改立即生效
$ source ~/.bash
# 安装自己的包, 发现不会报错了
$ cd ~/go/src/myMax/
$ go install

包管理工具 govendor 的安装

按照上面的方法按照,安装完以后再$GOPATH/bin/目录下就可看到有一个govendor文件

$ ll ~/workspace/bin/
-rwxrwxr-x 1 jerry jerry 13146288 Jul 23 04:44 govendor*
# 将govendor 添加到环境变量
$ vim ~/.bash
# 在vim文件中添加
export PATH=$PATH:/home/jerry/workspace/bin/
$ source ~/.bash

govendor 的使用

进过前面的配置,我们现在已经可以在自己的目录下使用govendor命令了。

$ cd ~/go/src/myMax/
# 生成vendor目录,生成vendor.jso
$ govendor init
$ cat vendor/vendor.json 
{
	"comment": "",
	"ignore": "test",
	"package": [],
	"rootPath": "myMax"
}

添加依赖包到vendor目录下

# govendor add +e 也可以
$ govendor add +external

理解golang包导入

https://www.cnblogs.com/sevenyuan/p/4548748.html

  1. 在使用第三方包的时候,实际上是链接了以该最新源码编译的临时目录下的.a文件。
  2. import后面的最后一个元素应该是路径,就是目录,并非包名。
  3. fmt.Println()中的fmt则是包名。
  4. import m "lib/math" 中的m是包名。

© 著作权归作者所有

共有 人打赏支持
科陆李明
粉丝 0
博文 20
码字总数 8827
作品 0
深圳
程序员
『Go 语言学习专栏』-- 第六期

大家好,我叫谢伟,是一名程序员。 我们已经研究了: Golang 环境的搭建、设置GOPATH、GOROOT 参数,Govendor 包管理, Goland 集成开发环境 Golang 语言学习专栏 -- 第一期 Golang 的基础知...

谢小路
05/12
0
0
『简书API:Golang 处理 json 用法讲解(4):视频版』

大家好,我是谢伟,是一名程序员。 简书API:Jianshu-go 历史文章: 1.『简书API : jianshu 基于 golang (1)』 2.『简书API:jianshu 基于golang -- 用法介绍 (2)』 3. 『简书API:Goque...

谢小路
04/15
0
0
golang 中的包管理

声明:本文仅限于简书发布,其他第三方网站均为盗版,原文地址: golang 中的包管理 对于习惯了 Java 和 Python 的程序员来说,对于包的管理都有着比较大的期望,当然,虽然 Java 和 Python...

yetship
2017/11/06
0
0
Golang依赖关联工具:glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 gl...

梦朝思夕
2017/07/19
0
0
golang web编程

golang web编程 go语言web框架beego的helloword示例 //安装beego模块 //E:>set GOPATH=E:resourceprojectweb_crawler //E:>go get github.com/… golang web编程五:提交url抓取页面内容并且......

d_watson
2016/05/27
47
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
0
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部