文档章节

golang 第三方包的使用总结

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

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是包名。

© 著作权归作者所有

共有 人打赏支持
科陆李明
粉丝 3
博文 28
码字总数 12864
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理

简介 TiDB-Binlog 组件用于收集 TiDB 的 binlog,并提供实时备份和同步功能。该组件在功能上类似于 MySQL 的主从复制,MySQL 的主从复制依赖于记录的 binlog 文件,TiDB-Binlog 组件也是如此...

TiDB
9分钟前
0
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
13分钟前
0
0
sparkCore-RDD详解

1.1 什么是RDD 1.1.1 产生背景 当初设计RDD主要是为了解决三个问题: Fast: Spark之前的Hadoop用的是MapReduce的编程模型,没有很好的利用分布式内存系统,中间结果都需要保存到external di...

freeli
14分钟前
0
0
walle的试用和结合vagrant

walle Vagrant 入门指南

miaojiangmin
16分钟前
0
0
python popen.stdout.read阻塞 解决办法

需求:利用python的subprocess模块结合logging模块实现监控子程序运行情况 代码如下(程序阻塞在stdout.readz这里,日志里找不到hang on...................): import osimport sysimpor...

fang_faye
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部