【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()函数了~

相关推荐
iOS开发上架哦6 分钟前
7种常见的源代码混淆技术详解:网络安全中的重要防线
后端
m***D28610 分钟前
JavaScript在Node.js中的内存管理
开发语言·javascript·node.js
我叫张小白。10 分钟前
JavaScript现代语法梳理:ES6+核心特性详解
开发语言·javascript·typescript·es6
回家路上绕了弯14 分钟前
单体架构拆微服务:从评估到落地的全流程指南
后端·微服务
疯狂的程序猴14 分钟前
手游频繁崩溃闪退原因分析与iOS崩溃日志解析方法
后端
Amos_Web28 分钟前
Rust实战(四):数据持久化、告警配置与Web API —— 构建监控系统的功能闭环
前端·后端·rust
sino爱学习28 分钟前
FastUtil 高性能集合最佳实践:让你的 Java 程序真正“快”起来
java·后端
-森屿安年-32 分钟前
LeetCode 283. 移动零
开发语言·c++·算法·leetcode
寻找华年的锦瑟37 分钟前
Qt-FFmpeg案例(0基础,包含环境配置)
开发语言·qt·ffmpeg
百***86461 小时前
Spring Boot应用关闭分析
java·spring boot·后端