这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
由于微信公众号不支持外链,文中大量链接可提供文末「阅读原文」查看。
题图:可视化 Go Runtime 指标
上期题目正确率 43%,一起看下。以下代码输出什么?
package mainimport "fmt"
func main() {
var s fmt.Stringer
s = "s"
fmt.Println(s)
}
A:s;B:编译错误;C:运行时 panic
正确答案:B。因为 字符串类型没有实现 fmt.Stringer 接口,所以编译错误。
本期题目来自 Go101。以下代码输出什么?
package mainfunc main() {
m := make(map[int]int, 3)
x := len(m)
m[1] = m[1]
y := len(m)
println(x, y)
}
安全更新和一些 bug 修复。
2、结构化日志讨论[3]
官方关于结构化日志的讨论。
3、lipgloss 0.6 发布[4]
漂亮的终端布局的风格定义。
4、Echo v4.9 发布[5]
高性能的 REST 框架。
5、mpb v8.0 发布[6]
在终端为 Go 命令行应用程序显示进度条。
6、scany 1.2 发布[7]
Go 实现的用于将数据从数据库扫描到 Go 结构的库。
7、FastHTTP 1.40 发布[8]
Go 快速的 HTTP 包。为高性能而调优。 热路径中的零内存分配。 比 net/http 快 10 倍。有兴趣可以研究为什么能做到快这么多。
8、weaviate 1.15 发布[9]
云原生、模块化、实时矢量搜索引擎。
本文主要是理解计算机内存的本质,1字节=8位,1位=一个通电or没通电的电子元件,通过不同的00101010表示不同的符号。
2、TIOBE 9 月编程语言排行榜:Go 快进入前 10 了!!
Go 第 12 名了。
3、一个线程安全的泛型支持map库[10]
Go语言原生的map类型并不支持并发读写。concurrent-map提供了一种高性能的解决方案:通过对内部map进行分片,降低锁粒度,从而达到最少的锁等待时间(锁冲突)。
4、与日俱进,在 Go 1.20 中这种高效转换的方式又变了[11]
Go1.20 字符串和字节数组的高效转换方式会变化。
因为现在服务上云的趋势,业务代码都纷纷转向golang的技术栈。在迁移或使用的过程中,由于对golang特性的生疏经常会遇到一些问题,本文总结了golang并发安全和参数引用传值时的一些知识。
6、Go 生态:Prometheus的四种指标类型,我终于搞懂了
指标是用来衡量性能、消耗、效率和许多其他软件属性随时间的变化趋势。
1、lane[12]
泛型版优先队列、队列、栈等数据结构的实现。
2、fetch[13]
简单、好用、强大的 Go HTTP Client。
1、goleak[14]
Uber 出品的 goroutine 泄露检测器。
2、go-bench-viewer[15]
Go benchmark 结果查看工具。
3、GopherCon Europe 2022 视频列表[16]
油管视频。
4、fan2go[17]
提供基于温度传感器的动态速度控制的简单守护程序。
5、sql2struct[18]
一个可以将 SQL 语句转换成 Go struct 的工具。
这个周刊每周日发布,同步更新在Go语言中文网[19]和微信公众号[20]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]结构化日志讨论: https://github.com/golang/go/discussions/54763
[4]lipgloss 0.6 发布: https://github.com/charmbracelet/lipgloss
[5]Echo v4.9 发布: https://github.com/labstack/echo/releases/tag/v4.8.0
[6]mpb v8.0 发布: https://github.com/vbauerster/mpb
[7]scany 1.2 发布: https://github.com/georgysavva/scany
[8]FastHTTP 1.40 发布: https://github.com/valyala/fasthttp
[9]weaviate 1.15 发布: https://github.com/semi-technologies/weaviate
[10]一个线程安全的泛型支持map库: https://colobu.com/2022/09/04/a-thread-safe-and-generic-supported-map/
[11]与日俱进,在 Go 1.20 中这种高效转换的方式又变了: https://colobu.com/2022/09/06/string-byte-convertion/
[12]lane: https://github.com/oleiade/lane
[13]fetch: https://github.com/go-zoox/fetch
[14]goleak: https://github.com/uber-go/goleak
[15]go-bench-viewer: https://nidorx.github.io/go-bench-viewer
[16]GopherCon Europe 2022 视频列表: https://www.youtube.com/playlist?list=PLtoVuM73AmsJjj5tnZ7BodjN_zIvpULSx
[17]fan2go: https://github.com/markusressel/fan2go
[18]sql2struct: https://github.com/idoubi/sql2struct
[19]Go语言中文网: https://studygolang.com/go/weekly
[20]微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91