Go语言爱好者周刊:第 91 期 — Error 和 String 的题目
昨天
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
由于微信公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。
题图:Go With The Domain
刊首语
网友贡献的一道题:
package main
import "fmt"
type T1 struct { String func() string}
func (T1) Error() string { return "T1.Error"}
type T2 struct { Error func() string}
func (T2) String() string { return "T2.String"}
var t1 = T1{String: func() string { return "T1.String" }}var t2 = T2{Error: func() string { return "T2.Error" }}
func main() { fmt.Println(t1.Error()) fmt.Println(t1.String())
fmt.Println(t2.Error()) fmt.Println(t2.String())
fmt.Println(t1) fmt.Println(t2)}
以上代码输出什么?
谁在招 Gopher
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
2、没错,可以全职参与开源语言开发:国人开发的语言 Go+ 团队招人
资讯
1、ION 1.9 发布[3]
分布式实时通信(RTC)系统,基于 Go 和 Flutter。
2、Gitea 1.14.0 发布[4]
Go 开发的 Git 自助服务。
3、基于寄存器 ABI 改造完成[5]
Go 基于寄存器的ABI规范的改造基本完工,平均性能提升 6%。
文章
1、一道 Go 闭包题,面试官说原来自己答错了:面别人也涨知识
本文从一道题引出 Go 中的闭包。这是 Go 语言爱好者周刊第 90 期的一道题目。
在 Go 中,协程就是一个包含程序运行时的信息的结构体,如栈,程序计数器,或者它当前的 OS 线程。调度器还必须注意 Goroutine 的开始和退出,这两个阶段需要谨慎管理。
4、注释竟然还有特殊用途?一文解惑 //go:linkname 指令
别告诉我你还不会。
虽然目前 Go 还未准备好作为脚本语言 “开箱即用” 的特性,用来替代 Python 和 Bash ,但是我们只需要一点点准备工作就可以达到想要的目标。
go-zero 生态的一个组件 go-stash。
本文介绍 RSA 干了什么,以及我们怎样用 Go 实现它。
七牛云 CEO、ECUG 发起人许式伟以「Go+ 与数据科学」 为主题进行了分享,讲述了对数据科学变迁的理解,对新语言 Go+ 的设想和规划,并大胆指出数据科学正迎来爆发期,像字节跳动一样的新型公司只会越来越多。
作为 Go 并发原语的第一篇文章,一定绕不开 Go 的并发哲学。从 Tony Hoare 写的 Communicating Sequential Processes 这篇文章说起,这篇经典论文算是 Go 语言并发原语的根基。
10、详解 Go 程序的启动流程,你知道 g0,m0 是什么吗?
Go 程序启动过程解析。
开源项目
1、encore[6]
一个框架,可以快速创建 API 和分布式系统。
2、go-snowflake[7]
基于 Twitter 雪花算法的无锁 ID 生成器。
3、reproxy[8]
Go 实现的极简反向代理。
4、dasel[9]
使用选择符(.)查询和修改数据结构中的字段,支持 JSON, TOML, YAML, XML 和 CSV 等。
5、weaviate[10]
云原生、模块化、实时矢量搜索引擎。
6、inspr[11]
用于简单、快速和安全地开发分布式应用程序的应用网格(app mesh)。
7、gotuna[12]
渐进式 Web 开发框架。
8、fonts[13]
Go 系统字体操作包。
资源&&工具
1、gops[14]
查看正在运行 Go 进程的列表和诊断工具。作者欢迎大家提需求。
2、gitleaks[15]
检测 Git 代码仓库中有没有存入敏感信息,比如密码。
3、pingme[16]
可向多个消息平台和电子邮件发送消息或警报的 cli 工具。
4、播客第 175 期[17]
GopherCon 提案的终极指南。
5、播客第 173 期[18]
聊 Go 应用的发布。
6、scilla[19]
网络信息收集工具。
7、gidevice[20]
Golang 实现的 iOS 设备通信工具。
8、httpit[21](kiyonlin[22] 投稿)
一款基于 fasthttp的 http(s) benchmark 工具,实时统计显示测试结果。
订阅
这个周刊每周日发布,同步更新在Go语言中文网[23]和微信公众号[24]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
参考资料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]
提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]
ION 1.9 发布: https://github.com/pion/ion
[4]
Gitea 1.14.0 发布: https://blog.gitea.io/2021/04/gitea-1.14.0-is-released/
[5]
基于寄存器 ABI 改造完成: https://github.com/golang/go/issues/40724#issuecomment-821758073
[6]
encore: https://github.com/encoredev/encore
[7]
go-snowflake: https://github.com/godruoyi/go-snowflake
[8]
reproxy: https://github.com/umputun/reproxy
[9]
dasel: https://github.com/TomWright/dasel
[10]
weaviate: https://github.com/semi-technologies/weaviate
[11]
inspr: https://github.com/inspr/inspr
[12]
gotuna: https://github.com/gotuna/gotuna
[13]
fonts: https://github.com/go-swiss/fonts
[14]
gops: https://github.com/google/gops
[15]
gitleaks: https://github.com/zricethezav/gitleaks
[16]
pingme: https://github.com/kha7iq/pingme
[17]
播客第 175 期: https://changelog.com/gotime/175
[18]
播客第 173 期: https://changelog.com/gotime/173
[19]
scilla: https://github.com/edoardottt/scilla
[20]
gidevice: https://github.com/electricbubble/gidevice
[21]
httpit: https://github.com/gonetx/httpit
[22]
kiyonlin: https://github.com/kiyonlin
[23]
Go语言中文网: https://studygolang.com/go/weekly
[24]
微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91