使用标准库

一、避免重复造轮子

fmt

我们可以查看到其里面的实现:

  1. package fmt
  2. func Println(a ...interface{}) (n int, err error) {
  3. return Fprintln(os.Stdout, a...)
  4. }
  5. func Printf(format string, a ...interface{}) (n int, err error) {
  6. return Fprintf(os.Stdout, format, a...)
  7. }
  8. func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) {
  9. p := newPrinter()
  10. p.doPrintf(format, a)
  11. n, err = w.Write(p.buf)
  12. p.free()
  13. return
  14. }
  15. func Fprintln(w io.Writer, a ...interface{}) (n int, err error) {
  16. p := newPrinter()
  17. p.doPrintln(a)
  18. n, err = w.Write(p.buf)
  19. p.free()
  20. return
  21. }
PrintlnPrintf
  1. // 打印一行空行
  2. fmt.Println()
  3. // 打印 4 5 6
  4. fmt.Println(4, 5, 6)
  5. // 占位符 %d 打印数字,\n换行
  6. fmt.Printf("%d\n", 2)
  7. // 占位符 %s 打印字符串,\n换行
  8. fmt.Printf("%s\n", "cat")
  9. // 占位符 %v或者%#v 打印任何类型,\n换行
  10. fmt.Printf("%#v,%v\n", "cat", 33)
  11. // 更多示例
  12. fmt.Printf("%s,%d,%s,%v,%#v\n", "cat", 2, "3", map[int]string{1: "s"}, map[int]string{1: "s"})

输出:

  1. 4 5 6
  2. 2
  3. cat
  4. "cat",33
  5. cat,2,3,map[1:s],map[int]string{1:"s"}
PrintfFprintfFprintf
func Printf(format string, a ...interface{})formata ...interface{}
  1. 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

在某些时候,我们可以使用官方库或别人写的库,毕竟轮子重造需要时间。

IDEIntegrated Development EnvironmentGolandGolangIDEA

二、总结

Golangdocker
  1. # 拉镜像
  2. docker pull hunterhug/gotourzh
  3. # 后台运行
  4. docker run -d -p 9999:9999 hunterhug/gotourzh

打开浏览器输入:http://127.0.0.1:9999 更全面地学习。

Golang