这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:父亲节快乐
上周周刊,虽然答题人数不多,但正确率才 28%。题目是这样的:
package main
import "fmt"
func named() (n, _ int) {
return 1, 2
}
func main() {
fmt.Print(named())
}
以上代码输出什么?
A:1 0;B:1 2;C:不能编译;D:0 0
正确答案是 B。记住一点:命名返回值会被 return 后面的值覆盖掉。
看看本周的题目:
Go 版本 1.12 以上,以下代码输出什么?
package main
import (
"fmt"
)
func main() {
m := map[string]int{"foo": 0, "bar": 1, "baz": 2}
for k := range m {
if k == "foo" {
delete(m, "bar")
}
if k == "bar" {
delete(m, "foo")
}
}
fmt.Println(m)
}
A:map[baz:2 foo:0];B:map[bar:1 baz:2];C:map[baz:2];D:不确定
Go 实现的功能齐全的 SFTP 服务器。
官方出品的 Mock 框架。
预览版本。
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
数据来源不知道是否可信。
2、鸭子类型 vs 结构化类型 vs 标称类型?Go是哪种?
编程语言具有类型概念 - 布尔类型,字符串,整型或者被称为类或者结构体的更加复杂的结构。
逃逸分析 是 Golang 编译器中的一个阶段,它通过分析用户源码,决定哪些变量应该在堆栈上分配,哪些变量应该逃逸到堆中。
在 Go 语言中,将 byte 数组转换为 string 时,随着转换后字符串的拷贝,可能会触发内存分配。
目前没太看出有多大用处。
Dave Cheney 在 Twitter 上发布了一个 Go 的小测验。
挺有意思。
1、go-vcr
记录并重放 HTTP 交互以获得快速,确定性和准确的测试。
2、gg
用于渲染 2D 图形的纯 Go 库。
3、scan
将 database/sql 行直接扫描到结构体,切片和原始类型。
4、domui
使用纯 Go 语言编写 Web 应用的框架。
5、LinDB
用 Go 重新实现饿了么在用的分布式时序数据库。
“谷歌一致性全球授权系统”论文的一个实现。
7、erda
Golang 开发的一站式云原生 PaaS 平台。
8、column
Go 实现的具有位图索引的高性能、列式、内存存储库。
1、signoz
帮助开发人员监控他们的应用程序和故障排除问题,是 DataDog,Newrelic 等的开源替代品。官方介绍博文:https://signoz.io/blog/monitoring-your-go-application-with-signoz/。
2、trivy
一个针对容器镜像、Git 存储库和文件系统的漏洞扫描器,适用于 CI。
3、mqtts
mqtt 协议安全检查工具。
4、csv-sql
加载 csv 和 excel(xlsx)文件并运行 sql 命令的命令行工具。
5、gobrew
另一个 Go 版本管理器。
6、Mmark
面向 IETF RFC 文档的 Markdown 处理器。
7、migrate
基于 sql.DB 和 fs.FS 实现的数据库迁移工具。
8、nancy
由 Sonatype OSS Index 提供的检查 Go 依赖项中漏洞的工具。
9、plow
基于 fasthttp 实现的高性能http压测工具。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。