摘要: 昨晚的笔试题 使用两个goroutine交替打印序列,一个goroutinue打印数字,另一个goroutine打印字母,最终结果如下: 12AB34CD56EF78GH910IJ 分析:问题核心是如何使两个协程顺序循环调用 使用阻塞channel交互控制 连续打印两个字符则是干扰项 阅读全文
posted @ 2019-08-02 14:40 张金富 阅读(378) 评论(2) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 23 篇。 什么是缓冲信道? 在上一教程里,我们讨论的主要是无缓冲信道。我们在信道的教程里详细讨论了,无缓冲信道的发送和接收过程是阻塞的。 我们还可以创建一个有缓冲(Buffer)的信道。只在缓冲已满的情况,才会阻塞向缓冲信道(Buffered Channel) 阅读全文
posted @ 2019-08-02 14:38 张金富 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 22 篇。 在上一教程里,我们探讨了如何使用 Go 协程(Goroutine)来实现并发。我们接着在本教程里学习信道(Channel),学习如何通过信道来实现 Go 协程间的通信。 什么是信道? 信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流 阅读全文
posted @ 2019-08-02 10:45 张金富 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 21 篇。 在前面的教程里,我们探讨了并发,以及并发与并行的区别。本教程则会介绍在 Go 语言里,如何使用 Go 协程(Goroutine)来实现并发。 Go 协程是什么? Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与 阅读全文
posted @ 2019-08-02 10:34 张金富 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到我们 Golang 系列教程的第 20 篇。 Go 是并发式语言,而不是并行式语言。在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别。 并发是什么? 并发是指立即处理多个任务的能力。一个例子就能很好地说明这一点。 我们可以想象一个人正在跑步。假如在他晨跑时,鞋带突然 阅读全文
posted @ 2019-08-02 08:49 张金富 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 19 个教程。接口共有两个教程,这是我们第二个教程。如果你还没有阅读前面的教程,请你阅读接口(一)。 实现接口:指针接受者与值接受者 在接口(一)上的所有示例中,我们都是使用值接受者(Value Receiver)来实现接口的。我们同样可以使用指针接受者(Poi 阅读全文
posted @ 2019-08-02 08:38 张金富 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 18 个教程。接口共有两个教程,这是我们接口的第一个教程。 什么是接口? 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。 在 Go 语言中,接口就是方法签名(Me 阅读全文
posted @ 2019-08-02 08:13 张金富 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 16 个教程。 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。 例如,一个职员有 firstName、lastName 和 age 三个属性,而把这些属性 阅读全文
posted @ 2019-08-02 08:12 张金富 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程 的第 17 个教程。 什么是方法? 方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。 下面就是创建一个方法的语法。 上面的代码片段创建了一个接收器类型为 阅读全文
posted @ 2019-08-02 08:12 张金富 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 欢迎阅读 Golang 系列教程第 14 部分。 由于和其他语言相比,字符串在 Go 语言中有着自己特殊的实现,因此在这里需要被特别提出来。 什么是字符串? Go 语言中的字符串是一个字节切片。把内容放在双引号""之间,我们可以创建一个字符串。让我们来看一个创建并打印字符串的简单示例。 在线运行程序 阅读全文
posted @ 2019-08-02 08:10 张金富 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 15 个教程。 什么是指针? 指针是一种存储变量内存地址(Memory Address)的变量。 如上图所示,变量 b 的值为 156,而 b 的内存地址为 0x1040a124。变量 a 存储了 b 的地址。我们就称 a 指向了 b。 指针的声明 指针变量的类 阅读全文
posted @ 2019-08-02 08:10 张金富 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 13 个教程。 什么是 map ? map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。 如何创建 map ? 通过向 make 函数传入键和值的类型,可以创建 map。make(map[type of key]typ 阅读全文
posted @ 2019-08-02 08:09 张金富 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程第 12 章。 什么是可变参数函数 可变参数函数是一种参数个数可变的函数。 语法 如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。 请注意只有函数的最后一个参数才允许是可变的。 通过一些例子理解可变参数函数如何工作 你是否 阅读全文
posted @ 2019-08-02 08:08 张金富 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 11 章。在本章教程中,我们将讨论 Go 语言中的数组和切片。 数组 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(译者注:当然,如果是 interface{} 阅读全文
posted @ 2019-08-02 08:07 张金富 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 这是 Golang 系列教程中的第 10 篇。 switch 是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块。它可以被认为是替代多个 if else 子句的常用方式。 看代码比文字更容易理解。让我们从一个简单的例子开始,它将把一个手指的编号作为输入,然后 阅读全文
posted @ 2019-08-02 08:06 张金富 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 这是 Golang 系列教程的第 9 部分。 循环语句是用来重复执行某一段代码。 for 是 Go 语言唯一的循环语句。Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环。 for 循环语法 初始化语句只执行一次。循环初始化后,将检查循环条件。如果条件的计算结果为 阅读全文
posted @ 2019-08-02 08:05 张金富 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 这是我们 Golang 系列教程的第 8 篇。 if 是条件语句。if 语句的语法是 如果 condition 为真,则执行 { 和 } 之间的代码。 不同于其他语言,例如 C 语言,Go 语言里的 { } 是必要的,即使在 { } 之间只有一条语句。 if 语句还有可选的 else if 和 el 阅读全文
posted @ 2019-08-02 08:03 张金富 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 这是 Golang 系列教程的第 7 个教程。 什么是包,为什么使用包? 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数。在实际中,这种把所有源代码编写在一个文件的方法并不好用。以这种方式编写,代码的重用和维护都会很困难。而包(Package)解决了 阅读全文
posted @ 2019-08-02 08:02 张金富 阅读(122) 评论(1) 推荐(0) 编辑
摘要: 这是我们 Golang 系列教程第 6 章,学习 Golang 函数的相关知识。 函数是什么? 函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出。 函数的声明 在 Go 语言中,函数声明通用语法如下: 函数的声明以关键词 func 开始,后面紧跟自定义的函 阅读全文
posted @ 2019-08-02 08:01 张金富 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 这是我们 Golang 系列教程的第五篇。 定义 在 Go 语言中,术语"常量"用于表示固定的值。比如 5 、-89、 I love Go、67.89 等等。 看看下面的代码: 在上面的代码中,变量 a 和 b 分别被赋值为常量 50 和 I love GO。关键字 const 被用于表示常量,比如 阅读全文
posted @ 2019-08-02 08:00 张金富 阅读(130) 评论(0) 推荐(0) 编辑