这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Go 吉祥物,代表了简单!
本期题目:以下代码输出什么?
func main() {
var m sync.Mutex
fmt.Print("A, ")
m.Lock()
go func() {
time.Sleep(200 * time.Millisecond)
m.Unlock()
}()
m.Lock()
fmt.Print("B ")
}
A:A,B;B:A,C:A,fatal error;D:fatal error...
正确答案:A,即正常输出 A,B。该题正确率 34%。
在 main goroutine 第二次请求 Lock 时,会堵塞。这样另一个 goroutine 会运行,释放锁。如果没有另一个 goroutine 释放锁,则会报 fatal error,所有的 goroutine 都处于 sleep 状态,死锁!
本期题目:以下代码输出什么?
package main
import "fmt"
func main() {
var a, b = 1.0, 2.0
fmt.Println(a | b)
}
A:3;B:+Inf;C:true;D:编译错误
支持 Go1.18,还有微服务。
Go 1.18 的支持。
Go 的 Bloom filters 实现。
使用最多的 strconv 包。
Go 要起飞?
3、goutil/dump —— 打印漂亮且易于阅读的 Go 数据
一个 golang 数据打印工具包,可以打印漂亮易读的 go slice、map、struct 数据。
有这方面需求的可以看看。
来自知乎。
1、lotusdb
基于快速文件的键值存储库。
2、xid
全局唯一 ID 生成器,使用 MongoDB 对象 ID 的算法。
3、pie
操作 slice 和 map 的方便库。
Go 中日期和时间 cheatsheet。
2、leaktest
Goroutine 泄露检测。
3、Data-Structures-and-Algorithms
数据结构和算法的 Go 实现。
4、syft
一个 CLI 工具和 Go 库,用于从容器映像和文件系统生成软件物料清单(SBOM)。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。