手把手教你导入Go语言第三方库
作者:MikuDance 发布时间:2024-04-28 10:46:13
最好的学习方式就是实践。 我们通过导入gin包来深入学习。
环境
go 1.13.5
goland 2019.3.1
manjaro-gnome3.34.2
环境变量
首先回想一下,我们安装goland的时候,设置了几个比较重要的环境变量,也就是GOROOT和GOPATH。
GOROOT比较容易理解。也就是我们go语言的安装目录,标准库什么的就放在里面的。在linux中的话,默认安装到/usr/lib/go中,我们创建项目时选择的SDK也就是这个。
GOPATH可以理解为工作目录。GOPATH指定的目录下一般有三个子目录。如下:
GOPATH //go工作目录
|
|--bin //编译后生成的可执行文件
|
|--pkg //编译后生成的包/库文件
|
|--src //项目的源代码文件
bin目录容易理解,而pkg包就是放第三方库的地方,像go get后的包就在里面。src目录就是放项目源代码的,一般都是把多个项目都放到src目录下,然后对这些项目统一管理,也就是共用bin和pkg,如果在不同目录放项目,然后把这些项目都放到GOPATH中,显然会有冲突。故一般都不推荐这么做。
我们可以在终端中输入go env
查看环境变量,下面是我的配置目录:
实践导包
现在我们先创建一个新项目,实际尝试一下。
然后新建一个main文件,输入:
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命令。
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
,但是会发现下载的速度简直感人,这是因为服务器在国外的嘛,你懂得,我们可以设置代理。
go env -w GOPROXY=https://goproxy.cn,direct
再次go get,发现速度飞起,尝试run一下,如果出现报红问题,像上面那样解决一下。
当然我们也可以项目放到GOPATH目录以外。如下
同样的,如果要导包的话,像上面那样使用go mod就行了。
我们可以进入GOPATH目录下的pkg目录,会发现我们导入的包在这里面的。
我们也可以进入goland,
发现外部库有两个,一个是SDK,也就是go的安装目录(GOROOT),标准库就在这里的。另一个是go mod,就是我们刚刚导入的,放到GOPATH/pkg下的包。
来源:https://www.cnblogs.com/just-save/p/12172947.html


猜你喜欢
- 块级元素块级元素生成一个元素框,(默认地)它会填充其父级元素的内容,旁边不能有其他元素。换句话说,他在元素框之前和之后生成了“分隔”符。我们
- 如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除。但
- 思路:创建文件时,先检查是否有同名文件(使用os.path.isfile),如果有,则在文件名后加上编号n来创建。关键点:1. 使用os.p
- mysqladmin 工具的使用格式:mysqladmin [option] command [command option] comman
- 前言之前搭建了一个ExtJS + spring + Oracle 的这样一个报表系统的框架。 因为其他部门的要求, 也需要这个Framewo
- 1303-Can 't create a PROCEDURE from within another stored routine.
- 本文实例为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,供大家参考,具体内容如下(1) 下载MySQL程序,您可以从
- 我的读者知道我是一个喜欢痛骂Python3 unicode的人。这次也不例外。我将会告诉你用unicode有多痛苦和为什么我不能闭嘴。我花了
- 1.字符串处理将字符串中的数字替换成其两倍的值,例如:修改前:"AS7G123m (d)F77k"修改后:"A
- 光学元件类平面反射镜是一种极为简单的模型,因为我们只需要考虑一个平面即可。但是除此之外的其他光学元件,可能会变得有些复杂:我们必须考虑光在入
- 经过一轮的项目封闭开发,页面制作的动手能力提高了不少,用AW的话说就是被复杂的东西虐过以后很多问题都变得容易了,的确很有道理。我个人觉得技术
- CKeditor编辑器是FCKeditor的升级版本想对于FCK来说,确实比较好用,加载速度也比较快以下是如果通过JS获取CKeditor编
- 本片博文主要介绍在Python3 环境下把用户名密码编码成字符串。代码如下:import base64def get_basic_auth_
- Vue设置浏览器小图标当我们使用浏览器做开发时,我们能希望浏览器标签页能显示自己的logo小图标,这个是怎样设置的呢?第一步:准备logo图
- 停止MySQL服务Windows可以右键我的电脑--管理--服务和应用程序--服务--找到对应的服务停止掉免密登录切换到MySQL安装路径下
- 服务端:#!/usr/bin/envimport SocketServerclass myMonitorHandler(SocketServ
- 首先:文章用到的解析库介绍BeautifulSoup:Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修
- 严正声明:本文仅限于技术讨论,严禁用于其他用途。基础知识socket通信模块:针对TCP/IP协议簇进行的程序封装,在Windows/Lin
- 准备图片选择一张shape为(500,500,3)的梵高的《星月夜》以便示例。1. 缩放 cv2.resize()方法cv2.resize(
- 对于access数据库的日期时间类型字段存储的日期,直接从数据库中读出显示的效果是带时间的如,2009-06-13 18:00 ,如果只是希