这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 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)
}
资讯
1、SFTPGo 2.1.0 发布[3]
Go 实现的功能齐全的 SFTP 服务器。
2、mock 1.6.0 发布[4]
官方出品的 Mock 框架。
预览版本。
谁在招 Gopher
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
文章
数据来源不知道是否可信。
2、鸭子类型 vs 结构化类型 vs 标称类型?Go是哪种?
编程语言具有类型概念 - 布尔类型,字符串,整型或者被称为类或者结构体的更加复杂的结构。
https://docs.studygolang.com。
逃逸分析 是 Golang 编译器中的一个阶段,它通过分析用户源码,决定哪些变量应该在堆栈上分配,哪些变量应该逃逸到堆中。
在 Go 语言中,将 byte 数组转换为 string 时,随着转换后字符串的拷贝,可能会触发内存分配。
目前没太看出有多大用处。
Dave Cheney 在 Twitter 上发布了一个 Go 的小测验。
挺有意思。
开源项目
1、go-vcr[5]
记录并重放 HTTP 交互以获得快速,确定性和准确的测试。
2、gg[6]
用于渲染 2D 图形的纯 Go 库。
3、scan[7]
将 database/sql 行直接扫描到结构体,切片和原始类型。
4、domui[8]
使用纯 Go 语言编写 Web 应用的框架。
5、LinDB[9]
用 Go 重新实现饿了么在用的分布式时序数据库。
6、access-controller[10]
“谷歌一致性全球授权系统”论文的一个实现。
7、erda[11]
Golang 开发的一站式云原生 PaaS 平台。
8、column[12]
Go 实现的具有位图索引的高性能、列式、内存存储库。
资源&&工具
1、signoz[13]
帮助开发人员监控他们的应用程序和故障排除问题,是 DataDog,Newrelic 等的开源替代品。官方介绍博文:https://signoz.io/blog/monitoring-your-go-application-with-signoz/。
2、trivy[14]
一个针对容器镜像、Git 存储库和文件系统的漏洞扫描器,适用于 CI。
3、mqtts[15]
mqtt 协议安全检查工具。
4、csv-sql[16]
加载 csv 和 excel(xlsx)文件并运行 sql 命令的命令行工具。
5、gobrew[17]
另一个 Go 版本管理器。
6、Mmark[18]
面向 IETF RFC 文档的 Markdown 处理器。
7、migrate[19]
基于 sql.DB 和 fs.FS 实现的数据库迁移工具。
8、nancy[20]
由 Sonatype OSS Index 提供的检查 Go 依赖项中漏洞的工具。
9、plow[21]
基于 fasthttp 实现的高性能http压测工具。
订阅
这个周刊每周日发布,同步更新在Go语言中文网[22]和微信公众号[23]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
往期推荐
参考资料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]SFTPGo 2.1.0 发布: https://github.com/drakkan/sftpgo/releases/tag/v2.1.0
[4]mock 1.6.0 发布: https://github.com/golang/mock
[5]go-vcr: https://github.com/dnaeon/go-vcr
[6]gg: https://github.com/fogleman/gg
[7]scan: https://github.com/blockloop/scan
[8]domui: https://github.com/reusee/domui
[9]LinDB: https://github.com/lindb/lindb
[10]access-controller: https://github.com/authorizer-tech/access-controller
[11]erda: https://github.com/erda-project/erda
[12]column: https://github.com/kelindar/column
[13]signoz: https://github.com/signoz/signoz
[14]trivy: https://github.com/aquasecurity/trivy
[15]mqtts: https://github.com/SPuerBRead/mqtts
[16]csv-sql: https://github.com/dhamith93/csv-sql
[17]gobrew: https://github.com/kevincobain2000/gobrew
[18]Mmark: https://github.com/mmarkdown/mmark
[19]migrate: https://github.com/maragudk/migrate
[20]nancy: https://github.com/sonatype-nexus-community/nancy
[21]plow: https://github.com/six-ddc/plow
[22]Go语言中文网: https://studygolang.com/go/weekly
[23]微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91