24 | 测试的基本规则和流程(下) Go 语言是一门很重视程序测试的编程语言,所以在上一篇中,我与你再三强调了程序测试的重要性,同时,也介绍了关于go test命令的基本规则和主要流程的内容.今天我们继续分享测试的基本规则和流程. 知识扩展 问题 1:怎样解释功能测试的测试结果? demo53.go package main import ( "errors" "flag" "fmt" ) var name string func init()…
你好,我是郝林,今天我分享的内容是:0基础的你,如何开始入门学习Go语言. 1. 你需要遵循怎样的学习路径来学习Go语言? 我们发现,订阅本专栏的同学们都在非常积极的学习和讨论,这让我们非常欣慰,并且和你一样干劲十足.不过,我在留言中发现,大家的基础好像都不太一样,大致可以分为这么几类. 零基础的同学:可能正准备入行或者刚刚对编程感兴趣,可以熟练操作电脑,但是对计算机.操作系统以及网络方面的知识不太了解. 无编程经验或者编程经验较少的同学:可能正在从事其他的技术相关工作,也许可以熟练编写脚本,但…
你好,我是郝林.今天想跟你聊聊我和Go语言的故事. Go语言是由Google出品的一门通用型计算机编程语言.作为在近年来快速崛起的编程语言,Go已经成功跻身主流编程语言的行列. 它的种种亮点都受到了广大编程爱好者的追捧.特别是一些对团队协作有较高要求的公司和技术团队,已经在有意识地大量使用Go语言编程,并且,使用的人群还在持续迅猛增长. 我个人很喜欢Go语言.我是从2012年底开始关注Go语言的,虽然这个日期与Go语言诞生的2009年11月10日相比并不算早,但我也算得上国内比较早期的使用者了.…
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码"可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中. 那么程序实体是什么呢?在 Go 语言中,程序实体是变量.常量.函数.结构体和接口的统称.我们总是会先声明(或者说定义)程序实体,然后再去使用. 比如在上一篇的例子中,我们先定义了变量name,然后在main函数中调用fmt.P…
你好,我是郝林.今天我分享的主题是测试的基本规则和流程的(下)篇. Go语言是一门很重视程序测试的编程语言,所以在上一篇中,我与你再三强调了程序测试的重要性,同时,也介绍了关于go test命令的基本规则和主要流程的内容.今天我们继续分享测试的基本规则和流程.本篇代码和指令较多,你可以点击文章查看原文. 知识扩展 问题 1:怎样解释功能测试的测试结果? 我们先来看下面的测试命令和结果: $ go test puzzlers/article20/q2 ok puzzlers/article20/q…
你已经使用过Go语言编写了小命令(或者说微型程序)吗? 当你在编写"Hello, world"的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感.如果你对这一点点并不满足,别着急,跟着学,我肯定你也可以写出很厉害的程序. 我们在上一篇的文章中学到了命令源码文件的相关知识,那么除了命令源码文件,你还能用Go语言编写库源码文件.那么什么是库源码文件呢? 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用…
23 | 测试的基本规则和流程 (上) 在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试.程序监测,以及 Go 语言标准库中各种常用代码包的正确用法. 从上个世纪到今日今时,程序员们,尤其是国内的程序员们,都对编写程序乐此不疲,甚至废寝忘食(比如我自己就是一个例子). 因为这是我们普通人训练自我.改变生活.甚至改变世界的一种特有的途径.不过,同样是程序,我们却往往对编写用于测试的程序敬而远之.这是为什么呢? 我个人感觉,从人的本性来讲,我们…
25 | 更多的测试手法 在本篇文章,我会继续为你讲解更多更高级的测试方法.这会涉及testing包中更多的 API.go test命令支持的,更多标记更加复杂的测试结果,以及测试覆盖度分析等等. 前导内容:-cpu 的功能 续接前文.我在前面提到了go test命令的标记-cpu,它是用来设置测试执行最大 P 数量的列表的. 复习一下,我在讲 go 语句的时候说过,这里的 P 是 processor 的缩写,每个 processor 都是一个可以承载若干个 G,且能够使这些 G 适时地与 M…
26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. 既然 Go 语言是以独特的并发编程模型傲视群雄的语言,那么我们就先来学习与并发编程关系最紧密的代码包. 前导内容: 竞态条件.临界区与同步工具 我们首先要看的就是sync包.这里的"sync"的中文意思是"同步".我们下面就从同步讲起. 相比于 Go 语言宣扬的&quo…
34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是不安全的.字典值本身可能会因这些操作而产生混乱,相关的程序也可能会因此发生不可预知的问题. 在sync.Map出现之前,我们如果要实现并发安全的字典,就只能自行构建.不过,这其实也不是什么麻烦事,使用 sync.…