Go语言核心36讲23】的更多相关文章

23 | 测试的基本规则和流程 (上) 在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试.程序监测,以及 Go 语言标准库中各种常用代码包的正确用法. 从上个世纪到今日今时,程序员们,尤其是国内的程序员们,都对编写程序乐此不疲,甚至废寝忘食(比如我自己就是一个例子). 因为这是我们普通人训练自我.改变生活.甚至改变世界的一种特有的途径.不过,同样是程序,我们却往往对编写用于测试的程序敬而远之.这是为什么呢? 我个人感觉,从人的本性来讲,我们…
25 | 更多的测试手法 在本篇文章,我会继续为你讲解更多更高级的测试方法.这会涉及testing包中更多的 API.go test命令支持的,更多标记更加复杂的测试结果,以及测试覆盖度分析等等. 前导内容:-cpu 的功能 续接前文.我在前面提到了go test命令的标记-cpu,它是用来设置测试执行最大 P 数量的列表的. 复习一下,我在讲 go 语句的时候说过,这里的 P 是 processor 的缩写,每个 processor 都是一个可以承载若干个 G,且能够使这些 G 适时地与 M…
目录 开篇词 | 跟着学,你也能成为Go语言高手 导读 | 写给0基础入门的Go语言学习者 导读 | 学习专栏的正确姿势 开篇词 | 跟着学,你也能成为Go语言高手 Go 语言是由 Google 出品的一门通用型计算机编程语言. Go 程序可以在装有 Windows.Linux.FreeBSD 等操作系统的服务器上运行,并用于提供基础软件支撑.API 服务.Web 服务.网页服务等等. Go 语言也在移动端进行了积极的探索,现在在 Android 和 iOS 上都可以运行其程序.另外,Go 语言…
06 | 程序实体的那些事儿 (下) 在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论.还记得吗? 最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在"屏蔽"的现象. 必要时,我们需要严格地检查它们的类型,但是怎样检查呢?咱们现在就说. 我今天的问题是:怎样判断一个变量的类型? 我们依然以在上一篇文章中展示过的 demo11.go 为基础. package main import "fmt"…
07 | 数组和切片 我们这次主要讨论 Go 语言的数组(array)类型和切片(slice)类型. 它们的共同点是都属于集合类的类型,并且,它们的值也都可以用来存储某一种类型的值(或者说元素). 不过,它们最重要的不同是:数组类型的值(以下简称数组)的长度是固定的,而切片类型的值(以下简称切片)是可变长的. 数组的长度在声明它的时候就必须给定,并且之后不会再改变.可以说,数组的长度是其类型的一部分.比如,[1]string和[2]string就是两个不同的数组类型. 而切片的类型字面量中只有元…
12 | 使用函数的正确姿势 在前几期文章中,我们分了几次,把 Go 语言自身提供的,所有集合类的数据类型都讲了一遍,额外还讲了标准库的container包中的几个类型. 在几乎所有主流的编程语言中,集合类的数据类型都是最常用和最重要的.我希望通过这几次的讨论,能让你对它们的运用更上一层楼. 从今天开始,我会开始向你介绍使用 Go 语言进行模块化编程时,必须了解的知识,这包括几个重要的数据类型以及一些模块化编程的技巧.首先我们需要了解的是 Go 语言的函数以及函数类型. 前导内容:函数是一等的公…
14 | 接口类型的合理运用 前导内容:正确使用接口的基础知识 在 Go 语言的语境中,当我们在谈论"接口"的时候,一定指的是接口类型.因为接口类型与其他数据类型不同,它是没法被实例化的. 更具体地说,我们既不能通过调用new函数或make函数创建出一个接口类型的值,也无法用字面量来表示一个接口类型的值. 对于某一个接口类型来说,如果没有任何数据类型可以作为它的实现,那么该接口的值就不可能存在. 我已经在前面展示过,通过关键字type和interface,我们可以声明出接口类型. 接口…
22 | panic函数.recover函数以及defer语句(下) 我在前一篇文章提到过这样一个说法,panic 之中可以包含一个值,用于简要解释引发此 panic 的原因. 如果一个 panic 是我们在无意间引发的,那么其中的值只能由 Go 语言运行时系统给定.但是,当我们使用panic函数有意地引发一个 panic 的时候,却可以自行指定其包含的值.我们今天的第一个问题就是针对后一种情况提出的. 知识扩展 问题 1:怎样让 panic 包含一个值,以及应该让它包含什么样的值? 这其实很简…
26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. 既然 Go 语言是以独特的并发编程模型傲视群雄的语言,那么我们就先来学习与并发编程关系最紧密的代码包. 前导内容: 竞态条件.临界区与同步工具 我们首先要看的就是sync包.这里的"sync"的中文意思是"同步".我们下面就从同步讲起. 相比于 Go 语言宣扬的&quo…
36 | unicode与字符编码 在开始今天的内容之前,我先来做一个简单的总结. Go 语言经典知识总结 在数据类型方面有: 基于底层数组的切片: 用来传递数据的通道: 作为一等类型的函数: 可实现面向对象的结构体: 能无侵入实现的接口等. 在语法方面有: 异步编程神器go语句: 函数的最后关卡defer语句: 可做类型判断的switch语句: 多通道操作利器select语句: 非常有特色的异常处理函数panic和recover. 除了这些,我们还一起讨论了测试 Go 程序的主要方式.这涉及了…