• 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)
    }

  • 相关阅读:
    sklearn之集成算法模型
    ScrollView嵌套ListView,GridView数据加载不全问题的解决
    ProgressBar---进度条
    Android中Button的五种监听事件
    ListView加载性能优化---ViewHolder---分页
    Menu与ActionBar的爱恨情仇
    toast组件小结
    数据挖掘导论---揭开数据挖掘神秘面纱-1
    腾讯地图坐标转百度地图坐标
    微信录音接口的调用以及amr文件转码MP3文件的实现
  • 原文地址:https://www.cnblogs.com/zuoyang/p/15219324.html
Copyright © 2020-2023  润新知