使用标准库

一、避免重复造轮子

官方提供了很多库给我们用,是封装好的轮子,比如包fmt,我们多次使用它来打印数据。

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

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的作用是格式化输出,如:

    // 打印一行空行
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

数据结构和算法(Golang实现)(7)简单入门Golang-标准库的更多相关文章

  1. 数据结构和算法(Golang实现)(1)简单入门Golang-前言

    数据结构和算法在计算机科学里,有非常重要的地位.此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析. 我们会先简单学习一下Golang,然后进入计算机程序世界的第 ...

  2. 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数

    包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...

  3. 数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句

    流程控制语句 计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次.主要有条件和循环语句. Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件 ...

  4. 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

    结构体和方法 一.值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,b 是一个值 a := 5 b : ...

  5. 数据结构和算法(Golang实现)(5)简单入门Golang-接口

    接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...

  6. 数据结构和算法(Golang实现)(6)简单入门Golang-并发、协程和信道

    并发.协程和信道 Golang语言提供了go关键字,以及名为chan的数据类型,以及一些标准库的并发锁等,我们将会简单介绍一下并发的一些概念,然后学习这些Golang特征知识. 一.并发介绍 我们写程 ...

  7. Golang 源码剖析:log 标准库

    Golang 源码剖析:log 标准库 原文地址:Golang 源码剖析:log 标准库 日志 输出 2018/09/28 20:03:08 EDDYCJY Blog... 构成 [日期]<空格 ...

  8. CQRS简单入门(Golang)

    一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/even ...

  9. Go 的 golang.org/x/ 系列包和标准库包有什么区别?

    在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto. 那 ...

随机推荐

  1. python如何通过正则表达式一次性提取到一串字符中所有的汉字

    1.python如何通过正则表达式一次性提取到一串字符中所有的汉字 https://blog.csdn.net/py0312/article/details/93999895 说明:字符串前的 “ r ...

  2. Android RadioGroup+Fragment 底部导航

  3. 记一次phpstudy应急响应

    某日,销售接了一个电话,突然告诉我有个某单位服务器中了木马被黑,具体情况未知.由于客户那边比较急,于是我火速赶往客户现场.到现场,客户首先给我看了深信服防火墙拦截记录,显示内网三台机器被入侵.通过沟通 ...

  4. 全国职业技能大赛信息安全管理与评估-一些细节tips

    Base64加解密: ubuntu@VM-0-5-ubuntu:~$ echo iloveyou | base64aWxvdmV5b3UKubuntu@VM-0-5-ubuntu:~$ echo aW ...

  5. 《闲扯Redis一》五种数据类型之String型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  6. Python字符串及基本操作(入门必看)

    基础入门的知识一直没有更新完,今天小张接着给大家带来入门级的字符串的常用操作.本文适合刚入门的小白,大佬们请绕过. 一.定义 字符串的意思就是“一串字符”,比如“Hello,Charlie”是一个字符 ...

  7. CF1324E Sleeping Schedule 题解

    原题链接 简要题意: 每次可以将 \(a_i\) 减 \(1\) 或不变.求让 \(a_i\) 的前缀和 \(\% h\) 的值在 \([l,r]\) 区间中的最多的个数. E题是个水dp,也不怎样 ...

  8. mycat主要参数

    以下内容源于mycat官方文档,记录下来方便直接查看: mycat版本:1.6 负载均衡类型,目前的取值有 3 种:1. balance="0", 不开启读写分离机制,所有读操作都 ...

  9. Redis数据结构——quicklist

    之前的文章我们曾总结到了Redis数据结构--链表和Redis数据结构--压缩列表这两种数据结构,他们是Redis List(列表)对象的底层实现方式.但是考虑到链表的附加空间相对太高,prev 和 ...

  10. IEnumerable和IQueryable在使用时的区别

    最近在调研数据库查询时因使用IEnumerable进行Linq to entity的操作,造成数据库访问缓慢.此文讲述的便是IEnumerable和IQueryable的区别. 微软对IEnumera ...