手把手教你导入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也就是这个。

手把手教你导入Go语言第三方库

GOPATH可以理解为工作目录。GOPATH指定的目录下一般有三个子目录。如下:


GOPATH    //go工作目录
 |
 |--bin     //编译后生成的可执行文件
 |
 |--pkg     //编译后生成的包/库文件
 |
 |--src     //项目的源代码文件

bin目录容易理解,而pkg包就是放第三方库的地方,像go get后的包就在里面。src目录就是放项目源代码的,一般都是把多个项目都放到src目录下,然后对这些项目统一管理,也就是共用bin和pkg,如果在不同目录放项目,然后把这些项目都放到GOPATH中,显然会有冲突。故一般都不推荐这么做。

我们可以在终端中输入go env查看环境变量,下面是我的配置目录:

手把手教你导入Go语言第三方库

手把手教你导入Go语言第三方库

实践导包

现在我们先创建一个新项目,实际尝试一下。

手把手教你导入Go语言第三方库

然后新建一个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的包了,这时候如果直接跑的话,是发现能直接跑的,但是发现报红, 输入也不会自动补全。

手把手教你导入Go语言第三方库

这时候只需打开setting,把go mod打勾,如下。然后直接跑一下,或者重新打开ide因该就不会报红了。

手把手教你导入Go语言第三方库

当然我们也可以手动自己下载,只需使用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 mod

  • GO111MODULE=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语言第三方库

同样的,如果要导包的话,像上面那样使用go mod就行了。

我们可以进入GOPATH目录下的pkg目录,会发现我们导入的包在这里面的。

手把手教你导入Go语言第三方库

我们也可以进入goland,

手把手教你导入Go语言第三方库

发现外部库有两个,一个是SDK,也就是go的安装目录(GOROOT),标准库就在这里的。另一个是go mod,就是我们刚刚导入的,放到GOPATH/pkg下的包。

来源:https://www.cnblogs.com/just-save/p/12172947.html

标签:Go,导入,第三方库
0
投稿

猜你喜欢

  • 利用Python如何生成hash值示例详解

    2022-02-28 23:29:25
  • Python使用ffmpy将amr格式的音频转化为mp3格式的例子

    2021-06-14 13:50:07
  • 解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了

    2023-06-13 19:13:36
  • 附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本的解决方法

    2024-01-27 19:46:16
  • go MethodByName()不能获取私有方法的解决

    2024-04-30 10:07:35
  • Sun拟10亿美元收购MySQL

    2008-01-17 11:56:00
  • js动态创建、删除表格示例代码

    2024-04-19 09:54:37
  • ROS机器人底盘坐标像素变换操作方法

    2023-11-08 20:15:43
  • Javascript 颜色渐变效果的实现代码

    2024-05-05 09:15:50
  • python实现三阶魔方还原的示例代码

    2021-03-12 08:45:04
  • Go语言时间处理必备技巧全解析

    2024-04-27 15:37:26
  • Python包资源下载路径报404解决方案

    2021-01-22 15:38:35
  • 实现div可编辑的常见方法

    2007-11-06 12:02:00
  • vsCode安装使用教程和插件安装方法

    2024-04-30 09:55:49
  • python中为main方法传参问题

    2023-05-20 04:48:12
  • Tensor 和 NumPy 相互转换的实现

    2023-07-05 04:55:51
  • MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

    2024-01-14 14:15:33
  • Python实现的json文件读取及中文乱码显示问题解决方法

    2022-05-18 16:41:15
  • 如何解决客户机页面刷新时连接不上数据库问题?

    2009-12-16 18:24:00
  • Python matplotlib超详细教程实现图形绘制

    2023-04-20 06:37:53
  • asp之家 网络编程 m.aspxhome.com