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

相关推荐
我材不敲代码2 分钟前
Python基础:列表详解、增删改查及常用高阶操作
开发语言·windows·python
Rust研习社4 分钟前
从碎片化到标准化:cargo-bp 如何重构 Rust 开发逻辑
后端·rust·编程语言
锋行天下16 分钟前
一句mysql复杂查询搞崩一个壮汉
后端·mysql·go
AI玫瑰助手22 分钟前
Python运算符:成员运算符(in/not in)的使用场景
开发语言·python·信息可视化
不肯过江东丶24 分钟前
大聪明教你学Java | Spring AI Lab:一个让你 3 分钟接入 AI 对话能力的 Spring Boot 工具箱
spring boot·后端
腾讯云云开发27 分钟前
CloudBase把一套完整的 Vibe Coding 平台开源了
后端·全栈·vibecoding
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第77题】【Mysql篇】第7题:回表查询与全表扫描的区别?
java·开发语言·数据库·mysql·面试
水木流年追梦1 小时前
大模型入门-大模型分布式训练2
开发语言·分布式·python·算法·正则表达式·prompt
lulu12165440781 小时前
Claude Code SpringBoot技能体系架构设计与演进
java·人工智能·spring boot·后端·ai编程
心之语歌1 小时前
Vert.x 高性能物联网 MQTT 网关构建指南
后端