Go 期刊七

120 阅读2分钟

Go语言爱好者周刊:劳动节快乐

不一样的Go

Golang中常用的代码优化点

在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验。这些经验是代表你对一些问题,或者一类问题的思考和解决。处理一个问题的方法有很多,如果频繁遇到同样的场景和问题,我们会自己思考有没有更好的方式来解决,所以也就有了一些代码套路了。

文章中总结了四个golang中常用的写法

  • 使用pkg/error而不是官方error库

  • 在初始化slice的时候尽量补全cap

  • 初始化一个类的时候,如果类的构造参数较多,尽量使用Option写法

  • 巧用大括号控制变量作用域

i/o timeout , 希望你不要踩到这个net/http包的坑

这其实是最近排查了的一个问题,发现这个坑可能比较容易踩上。

实际生产中发生的现象是,golang服务在发起http调用时,虽然http.Transport设置了3s超时,会偶发出现i/o timeout的报错。但是查看下游服务的时候,发现下游服务其实 100ms 就已经返回了。解决方案看这里。

我最喜欢的 Go 构建选项 | Linux 中国

Go 的构建选项提供了更好地控制构建过程的方法。它们还可以提供额外的信息,帮助把这个过程分成更小的部分。Go的交叉编译非常简单,很适合边缘的异构场景。

Go 好库推荐

Go 每日一库之 testify

testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify提供了很多方便的函数帮助我们做assert和错误信息输出。使用标准库testing,我们需要自己编写各种条件判断,根据判断结果决定输出对应的信息。

testify核心有三部分内容:

  • assert:断言;

  • mock:测试替身;

  • suite:测试套件。