官方提供了不少库给咱们用,是封装好的轮子,好比包fmt
,咱们屡次使用它来打印数据。算法
咱们能够查看到其里面的实现:docker
package fmt func Println(a ...interface{}) (n int, err error) { return Fprintln(os.Stdout, a...) } func Printf(format string, a ...interface{}) (n int, err error) { return Fprintf(os.Stdout, format, a...) } func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrintf(format, a) n, err = w.Write(p.buf) p.free() return } func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrintln(a) n, err = w.Write(p.buf) p.free() return }
函数Println
是直接打印并换行,Printf
的做用是格式化输出,如:segmentfault
// 打印一行空行 fmt.Println() // 打印 4 5 6 fmt.Println(4, 5, 6) // 占位符 %d 打印数字,\n换行 fmt.Printf("%d\n", 2) // 占位符 %s 打印字符串,\n换行 fmt.Printf("%s\n", "cat") // 占位符 %v或者%#v 打印任何类型,\n换行 fmt.Printf("%#v,%v\n", "cat", 33) // 更多示例 fmt.Printf("%s,%d,%s,%v,%#v\n", "cat", 2, "3", map[int]string{1: "s"}, map[int]string{1: "s"})
输出:数组
4 5 6 2 cat "cat",33 cat,2,3,map[int]string{1:"s"}
函数Printf
使用到了另一个函数Fprintf
,而函数Fprintf
内部又调用了其余的结构体方法。浏览器
对于咱们常用的func Printf(format string, a ...interface{})
,咱们传入format
和许多变量a ...interface{}
,就能够在控制台打印出咱们想要的结果。如:数据结构
fmt.Printf("%s,%d,%s,%v,%#v\n", "cat", 2, "3", map[int]string{1: "s"}, map[int]string{1: "s"})
其中%
是占位符,表示后面的变量逐个占位。占位符后面的小写字母表示占位的类型,%s
表示字符串的占位,%d
表示数字类型的占位,%v
或%#v
表示未知类型的占位,会自动判断类型后打印,加#
会打印得更详细一点。由于该打印不会换行,咱们须要使用\n
换行符来换行。并发
在某些时候,咱们能够使用官方库或别人写的库,毕竟轮子重造须要时间。数据结构和算法
同时,若是想开发速度提升,建议安装IDE
,也就是Integrated Development Environment
(集成开发环境),如Goland
(原生支持Golang
) 或IDEA
软件(需安装插件)。函数
咱们只学习了Golang
语言的一个子集,想更详细的学习,能够安装docker
后,打开终端:学习
# 拉镜像 docker pull hunterhug/gotourzh # 后台运行 docker run -d -p 9999:9999 hunterhug/gotourzh
打开浏览器输入:127.0.0.1:9999更全面地学习。
后面的算法分析和实现,会使用Golang
来举例。
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。