Go从入门到精通——tools包——编写自己的函数库

tools包——编写自己的函数库

  我们如何建立一个自己的函数库(也就是一个非执行包),后面将逐步编写一些有用的函数放在这个包中统一管理,供其他演示代码调用。

  我们把这个包起名为 "tools',表示它是一些工具类的函数。

  编写该函数的原因是,fmt 包中有 Println 函数 和 Printf 函数,但是没有类似 Printfln 的函数,也就是说没有既可以有格式化字符串又能自动加上换行符的输出函数。虽然 Printf 函数中可以用转义符 " " 代表换行,但每次都要输出该字符很麻烦,也影响代码的简洁美观。因此,我们准备编写一个 Printfln 函数,其功能与 Printf 函数基本相同,唯一的区别就是它会自动加上一个换行符。该函数放在 tools 包中供其他代码调用。

  首先,我们在 src 子目录下新建一个 tools 目录,并在其中新建一个 tools.go 文件,其中代码如下:

package tools

import (
	"fmt"
)

func Printfln(format string, a ...interface{}) {
	fmt.Printf(format+"
", a...)
}

  代码中仅定义了一个函数 Printfln,它所接受的参数与 fmt.Printf 函数完全一致,我们可以通过查看 Go 语言的参考文档来确认这一点,https://pkg.go.dev/fmt#Printf。

func Printf(format string, a ...interface{}) (n int, err error)

  我们知道 fmt.Printf 函数除了第一个参数是格式化字符串之外,后面还可以有多个参数(这种可以有多个参数的情况也叫可变成长参数),分别代表需要输出的多个数值,并且数值的类型可以是 Go 语言中的任意类型。

  a ...interface{} 这个参数定义就代表了任意多个不定类型的参数,其中 interface{} 在 Go 语言中代表一种特殊类型(称作“空接口”),这种类型的参数可以传入任意类型的数据,而它前面的省略号 "..."(三个英文的小数点)就代表任意个数的参数。

package main

import (
	"tools"
)

func main() {
	tools.Printfln("2+3=%v", 2+3)
}

原文地址:https://www.cnblogs.com/zuoyang/p/15219324.html