Go从入门到精通——tools包——编写自己的函数库
tools包——编写自己的函数库
我们如何建立一个自己的函数库(也就是一个非执行包),后面将逐步编写一些有用的函数放在这个包中统一管理,供其他演示代码调用。
我们把这个包起名为 "tools',表示它是一些工具类的函数。
编写该函数的原因是,fmt 包中有 Println 函数 和 Printf 函数,但是没有类似 Printfln 的函数,也就是说没有既可以有格式化字符串又能自动加上换行符的输出函数。虽然 Printf 函数中可以用转义符 "\n" 代表换行,但每次都要输出该字符很麻烦,也影响代码的简洁美观。因此,我们准备编写一个 Printfln 函数,其功能与 Printf 函数基本相同,唯一的区别就是它会自动加上一个换行符。该函数放在 tools 包中供其他代码调用。
首先,我们在 src 子目录下新建一个 tools 目录,并在其中新建一个 tools.go 文件,其中代码如下:
1 2 3 4 5 6 7 8 9 | package tools import ( "fmt" ) func Printfln(format string, a ... interface {}) { fmt.Printf(format+ "\n" , a...) } |
代码中仅定义了一个函数 Printfln,它所接受的参数与 fmt.Printf 函数完全一致,我们可以通过查看 Go 语言的参考文档来确认这一点,https://pkg.go.dev/fmt#Printf。
1 | func Printf(format string, a ... interface {}) (n int, err error) |
我们知道 fmt.Printf 函数除了第一个参数是格式化字符串之外,后面还可以有多个参数(这种可以有多个参数的情况也叫可变成长参数),分别代表需要输出的多个数值,并且数值的类型可以是 Go 语言中的任意类型。
a ...interface{} 这个参数定义就代表了任意多个不定类型的参数,其中 interface{} 在 Go 语言中代表一种特殊类型(称作“空接口”),这种类型的参数可以传入任意类型的数据,而它前面的省略号 "..."(三个英文的小数点)就代表任意个数的参数。
1 2 3 4 5 6 7 8 9 | package main import ( "tools" ) func main() { tools.Printfln( "2+3=%v" , 2+3) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具