这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:测试的几种状态
上期的题目,正确率只有 28%。一起看看:
func main() {
v := math.Log(-1)
m := map[float64]int{v: 1, v: 2, v: 3}
fmt.Println(m[v], len(m))
}
A:1 1;B:3 1;C:0 3;D:不能编译
正确答案是 C。首先,math.Log(-1),这是高中数学,负数不能取对数,所以这里的结果是 NaN,即不是一个数。这是关于计算机浮点数的知识了。对浮点数知识不熟悉的可以看看该文:《15 张图带你深入理解浮点数》。
关键知识点:任何一个 NaN 都不相等。因此 m[v] 会查找不到,所以返回 int 的默认值 0,而 m 中三个元素,key 都是 NaN,因此不相等,所有 len(m) 等于 3。
本期来一道简单的题目。以下代码输出什么?
package main
import (
"fmt"
)
func main() {
num := 65
str := string(num)
fmt.Printf("%v, %T\n", str, str)
}
A:65, string;B:A, string;C:65, int;D:报错
这样可以多模块编辑,可能会增加 go.work 这个文件来控制。
Go 是否应该增加 int128?issue 见:golang/go#9455。
这是一个 PPT,回顾了 Go1.16 和 1.17 的变化。
安全地管理你的 DotFiles 跨多种不同的机器。
sync.Once
估计大家都不陌生,但用法可以很多。
英文的。
Stack Overflow 上的一个问题分析。
go-zero 如何实现的?
Go 的泛型实现,可以了解下。
proxy 是近年来 Go 语言最重要的变化之一。
Go 中的通道(channel)机制十分强大,但是理解内在的概念甚至可以使它更强大。
Go vet 命令在编写代码时非常有用。它可以帮助您检测应用程序中任何可疑、异常或无用的代码。
9、Go: 监控模式
Go 能实现监控模式,归功于 sync 包和 sync.Cond 结构体。
高德Go业务落地过程是如何实现的,遇到过哪些问题,如何解决?本文将为大家介绍相关经验。
11、几行代码为老板省百万-某高并发服务Go GC及UDP Pool优化
鹅厂代码优化。
可扩展的实时消息服务器。
Web 应用程序防火墙。
Apache 开源的 Go 实现的 CDN 网络。
4、ns-x
一个易于使用、灵活的 Go 网络模拟器库,字节跳动出品。
1、gomonkey
一个在单元测试中使用 money patch 的库。
终端秒表器。
3、star-tex
Go 实现的开源 Tex 引擎。
4、ztrace
Go 实现的 Traceroute。
GitHub 针对 Go 仓库提供免费的持续 Benchmark 服务。
基于微软 Azure 的。
7、termdbms
用于查看和编辑数据库文件的 TUI。目前仅支持 SQLite,很快就会添加对 MySQL 的支持。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。