Golang 错误处理实践

任何语言,错误处理都是至关重要的,开发人员只有学会正确地处理错误,才可能写出健壮的程序。本文主要介绍使用 Golang 这门语言在错误处理方面的一些实践,首先来看一下我们可能遇到的一些问题。

借助 Goconvey 和 Sqlmock 对基于 Xorm 的 DB 操作进行单元测试和 Mock

一直以来,团队同学(也包括我自己)对单元测试不够重视,代码覆盖率几乎等于 0, 最直接的后果是代码 bug 率较高,重构困难。从 PHP 转为 Golang 开发已有一年多,进行过多次微服务架构优化,每次进行代码重构,鲜有单元测试,大多进行接口级别的集成测试。不够全面,测试用例也没和代码放在一起维护,后续逻辑调整,原测试用例几乎废掉。为了改变现状,认真调研了 Golang 生态的单元测试和 Mock 工具,因为业务逻辑大多离不开数据库的 CRUD 操作,所以本文先从简单的 Sql Mock 谈起。

批量删除自己的Github仓库

背景

fork了很多代码库,现在想批量删除,只保留自己创建的代码库。

解决方法:

使用Github提供的开发者API

1. 创建token

登录Github,按导航 “Settings/Developer settings”,切换到Tab “Personal access tokens”, 新生成一个token。选择 scope, “delelete_repo”。一次性操作,建议scope尽可能设置小范围,并且操作后删除该token。

图解 Go 并发编程

你很可能从某种途径听说过 Go 语言。它越来越受欢迎,并且有充分的理由可以证明。 Go 快速、简单,有强大的社区支持。学习这门语言最令人兴奋的一点是它的并发模型。 Go 的并发原语使创建多线程并发程序变得简单而有趣。我将通过插图介绍 Go 的并发原语,希望能点透相关概念以方便后续学习。本文是写给 Go 语言编程新手以及准备开始学习 Go 并发原语 (go routines 和 channels) 的同学。

检测 Go 程序中按值传递的 locks

检测 Go 程序中按值传递的 locks

go tool vet -copylocks 命令简介

Go 语言安装包附带 vet 命令行工具。该工具能对程序源码运行一套启发式算法以发现可疑的程序结构,如无法执行的代码或对 fmt.Printf 函数的错误调用(指 arguments 没有对齐 format 参数):