【Go语言成长之路】引入外部包

文章目录

引入外部包

​ 实现Demo: 引用rsc.io/quote包来实现打印输出

一、查找需要引用的包

​ 比如说我现在想要找一个quote的包,那么可以通过如下步骤进行操作:

  • 访问pkg.go.dev,并且输入你想要查找的包的名称

    注:pkg.go.dev是Go的源代码仓库,你可以在这里找到所有关于Go的源代码以及第三方已发布代码。

  • 之后可以查看自己想要导入的包的相关信息

  • 点击对应的包可以查看到包的相关API文档

    主要包括如下几个部分:README、Documentation、Source Files。其中Documentation里面又包含了:Overview、Index、Constants、Variables、Functions、Type。我们可以通过查看包的相关信息学习API的使用方法,以便我们在实际的代码中引用该包。

二、引入需要导入的包

​ 和【Go成长之路】Hello Go一样,我们依然在hello工程下进行代码编写。将hello.go的内容替换如下:

go 复制代码
package main

import (
	"fmt"

	"rsc.io/quote/v4" // 包的名称就是我们在pkg.go.dev中搜索的包的名称
)

func main() {
	fmt.Println(quote.Go()) // 可以在包的对应的API文档中查看包调用的函数
}

​ 之后首先要在hello工程内下载对应的包:

sh 复制代码
pzs@pzs-ubuntu22:~/go_study/hello$ go env -w GO111MODULE=on
pzs@pzs-ubuntu22:~/go_study/hello$ go env -w  GOPROXY=https://goproxy.cn,direct
pzs@pzs-ubuntu22:~/go_study/hello$ go get rsc.io/quote/v4
go: downloading rsc.io/quote/v4 v4.0.1
go: added rsc.io/quote/v4 v4.0.1

注:这里使用了https://goproxy.cn,direct这个镜像源进行加速下载,因为在国内的环境下有着许多中国 Gopher 们无法获取的模块,比如最著名的 golang.org/x/...,并且在中国大陆从 GitHub 获取模块的速度也有点慢,因此推荐大家使用镜像源进行下载!

​ 当然,为了方便,我们也可以将镜像源直接添加到$HOME/.profile文件末尾处,这样就不用每次使用go get下载命令的时候都需要设置镜像源了。添加的内容如下所示:

sh 复制代码
# 启用 Go Modules 功能
export GO111MODULE=on
# 阿里云
go env -w GOPROXY=https://goproxy.cn,direct

​ 下载完包之后,还需要添加go.sum文件用于验证我们下载的镜像是否是正确的,没有被篡改,这也是Go语言中基于安全考虑的地方。当然,Go语言不需要我们手动创建这个文件,只需要通过如下命令即可实现:

sh 复制代码
$ go mod tidy

​ 到此,我们在工程内就可以正常引用我们的包了。

三、运行程序

​ 运行hello.go以查看您正在调用的外部包的函数:

sh 复制代码
pzs@pzs-ubuntu22:~/go_study/hello$ go run hello.go 
Don't communicate by sharing memory, share memory by communicating.

​ 可以看到,我们成功地引用了外部包quoteGo()函数了~

相关推荐
打工的小王3 分钟前
Spring Boot(三)Spring Boot整合SpringMVC
java·spring boot·后端
java干货11 分钟前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
_F_y11 分钟前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
毕设源码-郭学长12 分钟前
【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案
开发语言·python·数据分析
无小道35 分钟前
Qt——常用控件
开发语言·qt
aini_lovee1 小时前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
R1nG8631 小时前
多线程安全设计 CANN Runtime关键数据结构的锁优化
开发语言·cann
初次见面我叫泰隆1 小时前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓1 小时前
[Class的应用]获取类的信息
java·开发语言
开开心心就好1 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender