Go语言爱好者周刊:第 165 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 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))
}
A:2;B:编译错误;C:运行 panic
资讯
MongoDB 的替代品。之前叫 MangoDB,容易被人理解为碰瓷。
现代的测试框架。
用于 MySQL 水平扩展的集群系统。
一个 Golang 微服务 HTTP 框架。
云原生微服务开发平台。
内容感知图像大小调整库。
Go 实现的功能齐全的 SFTP 服务器。
文章
推荐 Go 学习路线给大家!
写代码更丝滑!
本文是基于我最近对context源码学习的一些心得积累。
最近在 review 一些代码中,发现经常某个类型定义的方法,其接收者既有值类型,又有指针类型。
今天给大家推荐的是web应用安全防护方面的一个包:csrf。该包为Go web应用中常见的跨站请求伪造(CSRF)攻击提供预防功能。
gops 旨在帮助开发人员诊断 Go 进程并与之交互。它提供了追踪运行中的程序数秒钟,通过 pprof 获取 CPU 的 profile,甚至直接与垃圾回收器交互的能力。
开源项目
1、aretext
兼容 Vim 快键键的极简文本编辑器。
2、rand
快速、高质量的 math/rand 替代品。
3、livekit
高性能的 WebRTC。
4、ccache
高并发的 LRU 缓存。
资源&&工具
1、vhs
CLI 屏幕录制工具。
2、quill
任意平台的简单 Mac 二进制签名。
3、cdebug
实验性的容器调试器。
4、mpeg
纯 Go 实现的 mpeg 编解码器。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。