这里记录每周值得分享的 Go 语言相关内容,周日发布。

本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。

鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。

由于微信公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。

题图:来自 twitter

刊首语

在 Twitter 看到一道题(从作者描述看,是工作中真实遇到的),超级变态,真是没有最变态,只有更变态。这里主要让大家看一下,日常绝不会遇到这样的情况吧。

package main

import (
 "errors"
 "fmt"
)

func main() {
 еrr := errors.New("foo")
 var err error
 if еrr != nil {
  fmt.Printf("%T %v", err, err)
 }
}

以上代码,你有没有觉得很奇怪?咋一看,肯定编译不通过。你可以复制到文件中编译运行看看,或者直接访问该链接查看:https://play.studygolang.com/p/Cj7T86gwEnO。

这道“题”就看看玩笑一下~

资讯

Go 官方刚刚发布了 Go 1.15.7 和 Go 1.14.14,以解决最近报告的安全问题。建议所有用户都更新到以下版本之一(如果不确定哪个版本,请选择 Go 1.15.7)。

标记为弃用,不代表破坏兼容性,该包还是会保留,只是不建议使用了。相关 issue:https://github.com/golang/go/issues/42026。

3、Go issue 43810[3]

Go 对 persistent memory 的原生支持的提案。

文章

基础扎不扎实?!

Go 1.16 新包 io/fs 长文解析。

相信看完对字符编码有更好的掌握。

本博文中将使用 Go、GraphQL、PostgreSQL 创建一个 API。

chan

主要讲解 channel 的一些应用场景。

基于 golang 1.14 对 sync.Pool 进行分析。

KiteX 是字节跳动框架组研发的下一代高性能、强可扩展性的 Go RPC 框架。

大多数语言都有提供各自的 HTTP 客户端,文章接下来部分我们将动手实践如何使用 Go 语言发起 HTTP 请求,并讨论其中有可能遇到的问题。

开源项目

1、go-enry[4]

更快的编程语言检测库。

2、goridge[5]

高性能的 PHP-to-Go IPC 桥接器。

3、dragonboat[6]

一个高性能纯 Go 语言实现的多组 Raft 共识算法库。

4、statigz[7]

在 Go 中使用 http 提供预压缩的嵌入式文件。基于 Go1.16。

5、swaggerui[8]

带自托管 swagger-ui 的 Go 服务器。

6、pyroscope[9]

Go 实现的持续 profiling 平台,目前支持 Go、Ruby、Python 等。

7、Pglet[10]

后端开发人员的 Web UI 框架。

8、bitmaelum-suite[11]

安全的电邮系统替代品(实验性)。

9、pjson[12]

Go 的 JSON 流解析器。作者 tidwall 好几个优秀库。

10、go-pmem[13]

支持 Go 的开源的 Native persistent memory 实现。

11、gomoji[14]

在 Golang 中使用表情符号的有用功能。

资源&&工具

1、wuzz[15]

想象下 curl,但可以使用文本 UI 来展示请求和响应头,参数等。

2、sealos[16]

一条命令部署 Kubernetes 高可用集群。

3、Go 播客第 163 期[17]

通过 CUE 配置赋能开发人员。

4、whatchanged[18]

Golang 编写的变更日志生成器,用于生成 Git 仓库的变更日志的工具,并且提供了在线演示[19]

5、pitop[20]

基于 Raspberry Pi 4/3 终端的活动监视器。

订阅

这个周刊每周日发布,同步更新在Go语言中文网[21]和微信公众号[22]

微信搜索"Go语言中文网"或者扫描二维码,即可订阅。

wechat

参考资料

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

Go issue 43810: https://github.com/golang/go/issues/43810

[4]

go-enry: https://github.com/go-enry/go-enry

[5]

goridge: https://github.com/spiral/goridge

[6]

dragonboat: https://github.com/lni/dragonboat

[7]

statigz: https://github.com/vearutop/statigz

[8]

swaggerui: https://github.com/flowchartsman/swaggerui

[9]

pyroscope: https://github.com/pyroscope-io/pyroscope

[10]

Pglet: https://github.com/pglet/pglet

[11]

bitmaelum-suite: https://github.com/bitmaelum/bitmaelum-suite

[12]

pjson: https://github.com/tidwall/pjson

[13]

go-pmem: https://github.com/jerrinsg/go-pmem

[14]

gomoji: https://github.com/forPelevin/gomoji

[15]

wuzz: https://github.com/asciimoo/wuzz

[16]

sealos: https://github.com/fanux/sealos

[17]

Go 播客第 163 期: https://changelog.com/gotime/163

[18]

whatchanged: https://github.com/axetroy/whatchanged

[19]

在线演示: https://axetroy.github.com/whatchanged/

[20]

pitop: https://github.com/PierreKieffer/pitop

[21]

Go语言中文网: https://studygolang.com/go/weekly

[22]

微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91