这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:基于 fyne 实现一个简单计算器 https://dev.to/mavensingh/golang-gui-calculator-2e49。
刊首语
上期题目的正确了比较高:
package main
import "fmt"
func main() {
pairs := [][2]string{
{"a", "apple"},
{"a", "ant"},
{"b", "bee"},
}
m := map[string]string{
pairs[0][0]: pairs[0][1],
pairs[1][0]: pairs[1][1],
pairs[2][0]: pairs[2][1],
}
fmt.Println(m["a"])
}
A:编译错误;B:apple;C:ant;D:panic
正确答案 C。引用网友 Akatsuki 的解答:
正常情况下 map 字面量如果声明相同的 key 会编译错误,但是 pairs 第一层是切片不是数组,编译器不会做编译时检查,因此会通过编译,然后字面量声明 map 会按照 key 顺序依次插入,因此最后一次对 key “a” 的写入就是最终结果,而最后一次写入是 ant,最后的结果就是 ant。
本期一道 for..range 切片的题目。以下代码输出什么?
package main
import "fmt"
func main() {
a := []int{5}
for range a {
a = append(a, 1)
}
fmt.Println(len(a))
}
资讯
1、FerretDB v0.6.0 Alpha[3]
MongoDB 的替代品。之前叫 MangoDB,容易被人理解为碰瓷。
2、Ginkgo 2.4 发布[4]
现代的测试框架。
3、vitess 15.0 发布[5]
用于 MySQL 水平扩展的集群系统。
4、hertz 0.4 发布[6]
一个 Golang 微服务 HTTP 框架。
5、micro 3.14.0 发布[7]
云原生微服务开发平台。
6、Caire 1.4.5 发布[8]
内容感知图像大小调整库。
7、SFTPGo 2.4.0 发布[9]
Go 实现的功能齐全的 SFTP 服务器。
文章
推荐 Go 学习路线给大家!
写代码更丝滑!
本文是基于我最近对context源码学习的一些心得积累。
最近在 review 一些代码中,发现经常某个类型定义的方法,其接收者既有值类型,又有指针类型。
今天给大家推荐的是web应用安全防护方面的一个包:csrf。该包为Go web应用中常见的跨站请求伪造(CSRF)攻击提供预防功能。
gops 旨在帮助开发人员诊断 Go 进程并与之交互。它提供了追踪运行中的程序数秒钟,通过 pprof 获取 CPU 的 profile,甚至直接与垃圾回收器交互的能力。
开源项目
1、aretext[10]
兼容 Vim 快键键的极简文本编辑器。
2、rand[11]
快速、高质量的 math/rand 替代品。
3、livekit[12]
高性能的 WebRTC。
4、ccache[13]
高并发的 LRU 缓存。
资源&&工具
1、vhs[14]
CLI 屏幕录制工具。
2、quill[15]
任意平台的简单 Mac 二进制签名。
3、cdebug[16]
实验性的容器调试器。
4、mpeg[17]
纯 Go 实现的 mpeg 编解码器。
订阅
这个周刊每周日发布,同步更新在Go语言中文网[18]和微信公众号[19]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
参考资料
[1]
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]FerretDB v0.6.0 Alpha: https://github.com/FerretDB/FerretDB
[4]Ginkgo 2.4 发布: https://github.com/onsi/ginkgo
[5]vitess 15.0 发布: https://github.com/vitessio/vitess
[6]hertz 0.4 发布: https://github.com/cloudwego/hertz
[7]micro 3.14.0 发布: https://github.com/micro/micro
[8]Caire 1.4.5 发布: https://github.com/esimov/caire
[9]SFTPGo 2.4.0 发布: https://github.com/drakkan/sftpgo
[10]aretext: https://github.com/aretext/aretext
[11]rand: https://github.com/flyingmutant/rand
[12]livekit: https://github.com/livekit/livekit
[13]ccache: https://github.com/karlseguin/ccache
[14]vhs: https://github.com/charmbracelet/vhs
[15]quill: https://github.com/anchore/quill
[16]cdebug: https://github.com/iximiuz/cdebug
[17]mpeg: https://github.com/gen2brain/mpeg
[18]Go语言中文网: https://studygolang.com/go/weekly
[19]微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
资料下载
点击下方卡片关注公众号,发送特定关键字获取对应精品资料!
回复「电子书」,获取入门、进阶 Go 语言必看书籍。
回复「视频」,获取价值 5000 大洋的视频资料,内含实战项目(不外传)!
回复「路线」,获取最新版 Go 知识图谱及学习、成长路线图。
回复「面试题」,获取四哥精编的 Go 语言面试题,含解析。
回复「后台」,获取后台开发必看 10 本书籍。
对了,看完文章,记得点击下方的卡片。关注我哦~ 👇👇👇
如果您的朋友也在学习 Go 语言,相信这篇文章对 TA 有帮助,欢迎转发分享给 TA,非常感谢!