这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:TamaGo,一个 TinyGo ARM 替代品
Go101 作者发布了一道有意思的题目,这道题主要考察细节点,Go101 这本书也是以抠细节著称。看看这道题,以下程序输出什么?(单选)
package main
const s = "Go101.org"
// len(s) == 9
// 1 << 9 == 512
// 512 / 128 == 4
var a byte = 1 << len(s) / 128
var b byte = 1 << len(s[:]) / 128
func main() {
println(a, b)
}
A、0 0;B、0 4;C:4 0;D:4 4
这里涉及到两个知识点,在 Go 语言规范中都有明确的说明,但确实很细节。你答对了吗?原因知晓吗?
1、Go 对静态资源的内嵌支持的提案被接受,在 Go1.16 实现
提案在这里:https://github.com/golang/proposal/blob/master/design/draft-embed.md。
之前写文章分析过,现有的设计确实。。。期待重新设计能够更好。
3、TinyGo 对 ESP32 和 ESP8266 的初始支持
你可能已经听说过,上周我们在 0.15 版本的 TinyGo 中添加了 ESP32 和 ESP8266 支持。如果你熟悉微控制器,这将是令人振奋的消息,因为这些 ESP 设备既便宜又受欢迎。但是,这只是一个初始端口,在你可以利用 WiFi 和蓝牙等所有功能之前,还有很多工作要做。
支持 ZeroSSL 和 HTTP/2 server push。
具有 Protobuf 服务定义的简单 RPC 框架。
官方还是很谨慎。没有使用 module 真的说不过去了。
k6 是一种现代的开源性能和负载测试工具,用 Go 编写并且可以用 JavaScript 编写脚本。
对象怎么可以共享呢?
多人协同编辑。
知道自己在干什么还是可以使用的。
4、你必须了解的 Go 历史:帮助理解 Go 的设计思想和每个版本的优势或弱点
回顾 Go 版本的发展历史。
GitHub 这个功能出来有一段时间了,GitHub 粉应该定制下。
本文是第 104 期手撕 hashicrop/raft 算法的文字版,建议搭配着视频(本文文末)一起阅读。
从高层看内存管理的文章,而不拘于很多细节。
性能分析是排查内存泄露等问题的常见手段,可以让我们了解和捕获到程序堆内存和 Profile 信息,方便定位问题。Go 原生提供了丰富的分析工具,下面是通过几个内存泄露的案例对 Go 程序做性能分析,并介绍相关工具原理和细节。
1、tamago
适用于 ARM SoC 的 Bare Metal Go。该框架可在裸机 ARM System-on-Chip(SoC)设置(包括到目前为止的 Raspberry Pi 2 和 Zero)上启用 Go 应用的编译和执行。可能是更成熟的 TinyGo 的唯一 ARM 替代品,因为 TamaGo 修改了标准 Go 发行版,而 TinyGo 是基于 LLVM 的独特编译器。
使用 Go 创建漂亮的系统图。
3、mouthful
Disqus 评论系统的自助托管 Go 替代方案。为你的网站添加评论。
4、twtxt
Go 实现的去中心化类 Twitter的微博客平台。
Prisma Client Go 是一个自动生成且完全类型安全的数据库客户端。
6、overseer
用于创建可监控、支持优雅重启和自升级的 Go 应用的 module。
为 prometheus 准备的度量指标,针对 Gin 框架。
Go 中的声明性视图组件,可以渲染为 HTML。这里有一篇介绍的文章:https://www.maragu.dk/blog/gomponents-declarative-view-components-in-go/。
1、goconst
在 Go 中查找可以被常量替换的重复字符串。
2、https://github.com/Yash-Handa/logo-ls
现代 ls 命令与 VS Code 一样的文件"图标"和 Git 集成。
基于签名的文件格式识别。
4、Dbmate
轻量级,与框架无关的数据库迁移工具。用 Go 语言编写,但可以与以任何语言编写的使用数据库的应用程序一起使用。支持 MySQL,Postgres,SQLite 和 ClickHouse。
使用 golang 连接到 Microsoft Flight Simulator 2020。
6、程序员的数学(英文)
免费电子书,专为程序员准备。
如何使用 2D 游戏库制作视频的简单示例。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。