bufio 包

io.Reader、io.Writer 定义了基于字节的读写行为,然而许多情况下,你会想要基于字符串、行来进行读写,这可以透过 bufio 包的 bufio.Reader、bufio.Writer .........

io.Reader、io.Writer

在〈从标准输入、输出认识 io〉中谈到了 io.Reader、io.Writer,在 Go 中,这两个接口抽象化了输入、输出,认识这两个接口分别定义的 Read、Write 行为,是掌握 Go 中输入.........

从标准输入、输出认识 io

若要输出消息至控制台,可以透过 fmt 的 Print、Println、Printf 等函数,如果要从控制台读取使用者输入,可以透过 fmt 的 Scanf、Scanln 等函数。例如: packag.........

接口组合

有时,可能会想要基于某个已定义的接口,并新增自己的行为,在 Go 中,这类似于结构中方法的查找,只要在定义接口时,内嵌想要的接口名称就可以了。例如: package main import......

类型断言

定义接口时使用的名称,只是一个方便取用及阅读的标示,最重要的是接口中定义的行为,以及实际的接收者类型。因此,若你打算从一个接口转换至另一个接口,只要行为符合就可以了。例如以下是可行的: package.........

接口入门

在〈结构与继承〉的最后讨论到了多态,倘若现在需要有个函数,可以接受 Account 与 CheckingAccount 实例,或者是有个数组或 slice,可以收集 Account 与 Checkin.........

结构组合

结构本身用来组织相关数据,可以将处理结构的相关函数定义为方法,类似面向对象程序语言中,使用类定义值域与方法,那么继承呢?Go 语言并非以面向对象为主要典范的语言,没有继承的概念,不过可以使用组合代替.........

结构与方法

在〈结构入门〉中看过,有些数据会有相关性,相关联的数据组织在一起,对于数据本身的可用性或者是代码的可读性,都会有所帮助,实际上,有些数据与可处理它的函数也会有相关性,将相关联的数据与函数组织在一起,.........

结构入门

有些数据会有相关性,例如,一个 XY 平面上的点可以使用 (x, y) 座标来表示;名称、邮件地址、电话可能代表着一张名片上的信息。将相关联的数据组织在一起,对于数据本身的可用性或者是代码的可读性,.........

defer、panic、recover

就许多现代语言而言,异常处理机制是基本特性之一,然而,异常处理是好是坏,一直以来存在着各种不同的意见,在 Go 语言中,没有异常处理机制,取而代之的,是运用 defer、panic、recover 来.........

匿名函数与闭包

除了作为值传递之外,Go 的函数还可以是匿名函数,且具有闭包(Closure)的特性,由于 Go 具有指针,在理解闭包时反而容易一些了。 匿名函数 在〈一级函数〉中,我们看过函数可作为值传递的一个应用.........

一级函数

作为一门现代语言,Go 的特色之一是函数为一级函数(First-class function),可以作为值来进行传递。 函数作为值 例如你定义一个取最大值的函数 max,你可以将此函数作为值传递给 m.........