任何语言,错误处理都是至关重要的,开发人员只有学会正确地处理错误,才可能写出健壮的程序。本文主要介绍使用 Golang 这门语言在错误处理方面的一些实践,首先来看一下我们可能遇到的一些问题。
一直以来,团队同学(也包括我自己)对单元测试不够重视,代码覆盖率几乎等于 0, 最直接的后果是代码 bug 率较高,重构困难。从 PHP 转为 Golang 开发已有一年多,进行过多次微服务架构优化,每次进行代码重构,鲜有单元测试,大多进行接口级别的集成测试。不够全面,测试用例也没和代码放在一起维护,后续逻辑调整,原测试用例几乎废掉。为了改变现状,认真调研了 Golang 生态的单元测试和 Mock 工具,因为业务逻辑大多离不开数据库的 CRUD 操作,所以本文先从简单的 Sql Mock 谈起。
hystrix 是 Netflix 开源的一个非常强大的熔断降级组件, 用 Java 实现, 而 hystrix-go 是其 Go 版本的一个实现。本文主要介绍 Command 配置涉及的 5 个参数。
CommandConfig
结构体如下:
问题
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
背景
我用Hugo生成的静态博客部署在腾讯云CVM上,只有一个实例,存在单点风险,也不能实现负载均衡。所以想托管在GitHub Pages,本文简单记录实现过程。
背景
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 routines 和 channels) 的同学。
slice 表示底层数组的一个分片,内部数据结构包含三个字段:指向底层数组的指针 (ptr)、数组分片的长度 (len) 和底层数组大小 (cap) ,示意图如下:
检测 Go 程序中按值传递的 locks
go tool vet -copylocks
命令简介
Go 语言安装包附带 vet 命令行工具。该工具能对程序源码运行一套启发式算法以发现可疑的程序结构,如无法执行的代码或对 fmt.Printf
函数的错误调用(指 arguments 没有对齐 format 参数):