- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章手把手教你导入Go语言第三方库由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
最好的学习方式就是实践。 我们通过导入gin包来深入学习.
首先回想一下,我们安装goland的时候,设置了几个比较重要的环境变量,也就是goroot和gopath.
goroot比较容易理解。也就是我们go语言的安装目录,标准库什么的就放在里面的。在linux中的话,默认安装到/usr/lib/go中,我们创建项目时选择的sdk也就是这个.
gopath可以理解为工作目录。gopath指定的目录下一般有三个子目录。如下:
1
2
3
4
5
6
7
|
gopath //go工作目录
|
|--bin //编译后生成的可执行文件
|
|--pkg //编译后生成的包/库文件
|
|--src //项目的源代码文件
|
bin目录容易理解,而pkg包就是放第三方库的地方,像go get后的包就在里面。src目录就是放项目源代码的,一般都是把多个项目都放到src目录下,然后对这些项目统一管理,也就是共用bin和pkg,如果在不同目录放项目,然后把这些项目都放到gopath中,显然会有冲突。故一般都不推荐这么做.
我们可以在终端中输入go env查看环境变量,下面是我的配置目录:
现在我们先创建一个新项目,实际尝试一下.
然后新建一个main文件,输入:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package
main
import
"github.com/gin-gonic/gin"
func main() {
r := gin.
default
()
r.get(
"/ping"
, func(c *gin.context) {
c.json(
200
, gin.h{
"message"
:
"pong"
,
})
})
r.run()
}
|
再打开终端,输入go mod init, 直接跑一下,会发现直接在下载import的包了,这时候如果直接跑的话,是发现能直接跑的,但是发现报红, 输入也不会自动补全.
这时候只需打开setting,把go mod打勾,如下。然后直接跑一下,或者重新打开ide因该就不会报红了.
当然我们也可以手动自己下载,只需使用go get命令.
1
|
go get -u github.com/gin-gonic/gin
|
但是发现根本没有反应,输入go env查看发现有个变量叫go111module,这玩意是干什么的呢, 是用来配置go mod用的,比如什么时候到go path,goroot去找,或者直接在go mod中找。一共有三个状态.
go111module=auto
, 这个是默认值,根据一些情况自动判断是否打开go mod。go111module=on
,打开go modgo111module=off
关闭go mod于是我们输入go env -w go111module=on打开go mod,再次输入go get -u github.com/gin-gonic/gin,但是会发现下载的速度简直感人,这是因为服务器在国外的嘛,你懂得,我们可以设置代理.
1
|
go env -w goproxy=https://goproxy.cn,direct
|
再次go get,发现速度飞起,尝试run一下,如果出现报红问题,像上面那样解决一下.
当然我们也可以项目放到gopath目录以外。如下 。
同样的,如果要导包的话,像上面那样使用go mod就行了.
我们可以进入gopath目录下的pkg目录,会发现我们导入的包在这里面的.
我们也可以进入goland, 。
发现外部库有两个,一个是sdk,也就是go的安装目录(goroot),标准库就在这里的。另一个是go mod,就是我们刚刚导入的,放到gopath/pkg下的包.
到此这篇关于手把手教你导入go语言第三方库的文章就介绍到这了,更多相关go导入第三方库内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://www.cnblogs.com/just-save/p/12172947.html 。
最后此篇关于手把手教你导入Go语言第三方库的文章就讲到这里了,如果你想了解更多关于手把手教你导入Go语言第三方库的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有 asp.net mvc 2 应用程序。 现在我正在重新实现它以使用 Ninject .除了一件事,一切都很好:我应该在哪里存储 Ninject.dll ?? 我创建了 lib我的 appdir
我有一个使用第三方 FTP 库的类 http://ftps.codeplex.com/我想模拟它,这样我就可以只测试那个类而不是 FTP 库。我已经做到了,但对我来说感觉很乱。详细地说,该类使用 Al
我正在尝试关注 Ilya Grigoric's performance best practices通过内联关键的 css 和 js 并在以后异步加载所有其余部分。 我的问题是当我的页面需要第 3 方
我正在开发聊天应用程序。我有像 Skype 这样的聊天同步选项。假设我登录了设备 A,并且已经通过该设备进行了聊天。现在,当我当时登录设备 B 时,所有聊天记录都会同步到设备 B。 XMPP 问题 我
我在 VS2010 上有两个项目的解决方案。 主工程引用并依赖第二个,构建为静态库。第二个使用未在解决方案中构建的静态第三方库,但仅在第二个项目的链接器设置中引用。 如果我尝试生成解决方案,VS失败,
我想跟踪从另一个第 3 方库发出的对某些第 3 方库的调用。 示例:我想跟踪对库 A 的调用。我的应用程序静态链接库 B,而库 B 又静态链接到库 A。所以基本上我拥有的是 libAB.a 在动态链接
代码显示使用 -cp 触发器编译但未运行。显然,它找不到 HashMultimap。类路径问题? $ javac -cp google-collect-1.0.jar MultiThing.java
我所拥有的:我的代码(简单的 main.cpp)、第 3 方库的 header (EnvVar TPLIB_INCLUDE)、二进制库(TPLIB_BINARY_PATH 中的几个 .a 文件)和以下
我是 ionic 的新手,需要一些帮助: 我已经通过 here 中的教程实现了 chart.js 之类的东西,我真的很喜欢这个结果。 但我尝试用来自 processing 的 p5.js 做同样的事情
是否可以在 MonoTouch 中使用用 C# 编写的第 3 方库?例如,如果我需要进行图像处理并需要使用图像处理库... 或者重新表述问题:有人可以向我解释一下用 Objective-C 或 C#
我目前正在努力将一组 C++ 二进制文件升级为基于 Autotools 的更现代的东西,每个文件都使用自己的 Makefile 集。但是我不知道如何将第三方库(例如 Oracle Instant Cl
在过去的几个月里,我的学习速度一直很慢,并且很好奇 C++ 标准是否使用第 3 方库。我问这个的原因是因为 C++20 说可能的库更改将包括我被告知在 Boost ASIO 之后需要的网络。 Boos
我正在尝试开始使用 angular 2 cli。 我想在我的项目中使用 momentjs,所以这是我所做的: 1. 使用angular cli创建项目。 2. 运行 npm install --sav
我的配置如下: OCaml 由 Homebrew 根据其默认配方安装。它住在 /usr/local/Cellar/objective-caml/3.12.0/[bin,lib,share] ,其内容被
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Managing 3rd party sources and binaries used by code under
所以我在项目中使用专有的 java 库,我无法访问源代码。 它抛出一个Message对象,显然我不能实现Serializable。它在整个运行时生成。 我有哪些选择?有没有办法将 Message 对象
我正在尝试使用以下方法将 Google Plus 身份验证引入 CodeIgniter: https://code.google.com/p/google-api-php-client/ 我已经把这些
我的配置中有以下内容: const viewerConfigProdWeb = merge(common.commonWebConfig, { output: { path: outputPa
在生产项目中使用 3rd 方库/组件时,您是否严格要求仅使用所述库的已发布版本? 您什么时候考虑使用库的预发布或测试版(在开发中?在生产中,在某些情况下)? 如果您遇到库的错误或缺点并且您已经 pro
我正在尝试将 qpOASES c++ 库包含在我在 RStudio 中构建的 Rcpp 项目中。 我浏览了编写 R 包和各种 Rcpp 小插图。我找到了这个 post其中引用 this存档对话。按照我
我是一名优秀的程序员,十分优秀!