Go语言爱好者周刊:第 118 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Go 圣诞日历
刊首语
上期的题目:
package main
import "fmt"
func main() {
x := []byte{}
fmt.Printf("%#v %T\n", x, x)
}
A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8
答案是 B。这是一个 bug,说正确答案应该是 []uint8{} []uint8
才对,因为 byte 是 uint8 的别名,但现在即使是 x := []uint8{}
,结果也还是 B。不过为了兼容性,该 bug 目前不会修复,影响不大,详见:https://github.com/golang/go/issues/44391。
本期是一道关于 defer 的题目:
package main
import (
"fmt"
)
func main() {
f := func() { fmt.Print("A") }
defer f()
f = func() { fmt.Print("B") }
defer f()
}
A:AA;B:AB;C:BA;D:BB
资讯
安全更新。
Unix 风格的 Web 爬虫。
2021 年 11 月 5 日举行的,视频发布在了 youtube 上。
文章
常见的需求。
这是最常见的问题之一。你可以通过互联网寻找这个问题的答案。不过,我不确认我的设计是否 100% 正确,但希望给你一些参考。
标准库中新增的一个 API:strings.Clone()。
自从 Go 1.4 引入 go generate 命令后,它一直广泛应用于 Go 生态系统。
各大框架的一些教程。
听起来很厉害!
重构是程序员需要掌握的技术。
不同的人可能有不同的做法,供参考。
开源项目
1、MangoDB
MongoDB 的的开源替代方案,Go 语言实现。
2、gohtml
将 Go 结构体转为 HTML 的编码器。
3、noti
监听进程并触发通知。
4、webview
小型的跨平台 webview 库。
5、kyoto
Golang SSR-first 前端库。
前微信技术专家打造的基于 Go 实现的即时通讯(IM)项目。
资源&&工具
可视化 Go 结构体的嵌入式层次结构。
一个 Go 的静态分析器,它建议重新排列结构字段,以提供最大的空间/分配效率。
3、algs4-go
将《算法》第四版中的 Java 算法实现“翻译”为 Go 实现。
Gopher 圣诞日历。
5、depp
Go 实现的快速未使用和重复的依赖项检查器。
Go 中泛型的使用。油管视频。
7、dl
命令行文件下载器。
数据结构的泛型实现。
9、u-root
Go实现的 linux/unix 常用工具集合。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。