这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Go1.17 RC1 发布
上期是一道关于 reflect 的题,以下代码输出什么?
package main
import (
"fmt"
"reflect"
)
func main() {
i := 1
j := 1
no1 := &i
no2 := &j
if reflect.DeepEqual(no1, no2) {
fmt.Println("equal")
return
}
fmt.Println("not equal")
}
A:equal;B:not equal;C:不确定
答案是 A。一半人答对!从 DeepEqual 这个函数名可以看出,它会进行“深度”比较。对于指针类型,它会比较它们指向的值是否相等。因为 i 和 j 的值都是 1,所以结果是 A。详细信息可以查看 DeepEqual 函数的文档。
本期题目来自 Go101。以下代码输出什么?
package main
func main() {
var x *struct {
s [][32]byte
}
println(len(x.s[99]))
}
A:运行时 panic;B:32;C:编译错误;D:0
官方常规安装方式:
$ go get golang.org/dl/go1.17rc1
$ go1.17rc1 download
又一个小问题引发安全 Bug。
谷歌出品。
小型的 WebSocket 库。
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
建议查查你的项目。
讨论微服务架构中的自我恢复能力。
对于一个程序来说,从内存和性能角度讲创建一个 OS 线程或切换线程花费巨大。
4、Go 项目从 Travis 迁移至 GitHub Actions
使用新的 GitHub Actions 将手动发版过程自动化。
使用 //go:build
格式。
由于Go语言在抽象和垃圾回收内存管理模型方面介于C和Python之间,这对于那些希望能够找到一门处理效率高但同时又容易理解的高级程序语言的程序员来说,具有相当大的吸引力。
两门语言配合挺好的吧!
挺有名的一个 Go 日志库。
9、Russ Cox 三篇关于内存模型的新文章,中文翻译版
10、Rust + Go 双剑合璧:WebAssembly 领域应用
一个 CNCF 项目。
1、LiveKit
实时通信的开源平台,有相当完整的前后端实现,支持音视频,服务端基于 Go 实现。
2、golfcart
生命不息,折腾不止。又一个 Go 语言实现的脚本语言。
3、testza
全功能测试框架!断言、mock 等。
4、mpb
多进度条实现,并发下载可能需要。
5、ergo
Erlang/TOP 技术的 Go 实现。
6、cap
Hashicorp 开源,一个认证包的集合。
7、gotk4
Go GTK4 绑定生成器。
Go 布尔表达式索引器库。
提供了一个内存池,它在堆外分配的块不会被垃圾收集器追踪到。
10、go-thinkium
Go 实现的全能公链 thinkium。
11、netpoll
开源网络库。
1、minimock
强大的 mock 生成工具。
2、gan-go
通过 Gorgonia 在 Go 中使用生成对抗性网络(GAN) 。
MIME 头分析工具 mimeheader。
内置 Go 语言扩展引擎的 Go Web 服务器。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。