Go语言爱好者周刊:第 111 期 — 多module工作区模式

Go语言精选

共 3551字,需浏览 8分钟

 ·

2021-09-07 12:35

这里记录每周值得分享的 Go 语言相关内容,周日发布。

本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2]

鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 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)
}

资讯

1、Go1.18 计划增加 workspace mode[3]

这样可以多模块编辑,可能会增加 go.work 这个文件来控制。

2、Russ Cox 发推文咨询建议[4]

Go 是否应该增加 int128?issue 见:https://github.com/golang/go/issues/9455。

3、Go语言带来的生活质量提升[5]

这是一个 PPT,回顾了 Go1.16 和 1.17 的变化。

4、chezmoi 2.2.0 发布[6]

安全地管理你的 DotFiles 跨多种不同的机器。

文章

1、原来sync.Once还能这么用

sync.Once估计大家都不陌生,但用法可以很多。

2、新书推荐:用 Gin 框架构建分布式应用

英文的。

3、Go select 竟然死锁了。。。

Stack Overflow 上的一个问题分析。

4、Go:自适应负载均衡算法原理和实现

go-zero 如何实现的?

5、Go泛型是怎么实现的?[7]

Go 的泛型实现,可以了解下。

6、为什么要使用 Go module proxy

proxy 是近年来 Go 语言最重要的变化之一。

7、Go:无缓冲和有缓冲通道

Go 中的通道(channel)机制十分强大,但是理解内在的概念甚至可以使它更强大。

8、go vet:超出预期的强大

Go vet 命令在编写代码时非常有用。它可以帮助您检测应用程序中任何可疑、异常或无用的代码。

9、Go: 监控模式

Go 能实现监控模式,归功于 sync 包和 sync.Cond 结构体。

10、高德渲染网关Go语言重构实践

高德Go业务落地过程是如何实现的,遇到过哪些问题,如何解决?本文将为大家介绍相关经验。

11、几行代码为老板省百万-某高并发服务Go GC及UDP Pool优化

鹅厂代码优化。

开源项目

1、centrifugo[8]

可扩展的实时消息服务器。

2、coraza-waf[9]

Web 应用程序防火墙。

3、trafficcontrol[10]

Apache 开源的 Go 实现的 CDN 网络。

4、ns-x[11]

一个易于使用、灵活的 Go 网络模拟器库,字节跳动出品。

资源&&工具

1、gomonkey[12]

一个在单元测试中使用 money patch 的库。

2、countdown[13]

终端秒表器。

3、star-tex[14]

Go 实现的开源 Tex 引擎。

4、ztrace[15]

Go 实现的 Traceroute。

5、gobencher[16]

GitHub 针对 Go 仓库提供免费的持续 Benchmark 服务。

6、微软教程:使用Go构建无服务器应用[17]

基于微软 Azure 的。

7、termdbms[18]

用于查看和编辑数据库文件的 TUI。目前仅支持 SQLite,很快就会添加对 MySQL 的支持。

订阅

这个周刊每周日发布,同步更新在Go语言中文网[19]微信公众号[20]

微信搜索"Go语言中文网"或者扫描二维码,即可订阅。

wechat

参考资料

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

Go1.18 计划增加 workspace mode: https://github.com/golang/go/issues/45713

[4]

Russ Cox 发推文咨询建议: https://twitter.com/_rsc/status/1433128358683029506

[5]

Go语言带来的生活质量提升: https://docs.google.com/presentation/d/1sBXrDYiSCPVBeguQbCJebxIVptjTFKjGOBsElkbp040/edit?resourcekey=0-TM-u9xTZZHUyt3-y9-tZow

[6]

chezmoi 2.2.0 发布: https://github.com/twpayne/chezmoi

[7]

Go泛型是怎么实现的?: https://colobu.com/2021/08/30/how-is-go-generic-implemented/

[8]

centrifugo: https://github.com/centrifugal/centrifugo

[9]

coraza-waf: https://github.com/jptosso/coraza-waf

[10]

trafficcontrol: https://github.com/apache/trafficcontrol

[11]

ns-x: https://github.com/bytedance/ns-x

[12]

gomonkey: https://github.com/agiledragon/gomonkey

[13]

countdown: https://github.com/antonmedv/countdown

[14]

star-tex: https://git.sr.ht/~sbinet/star-tex

[15]

ztrace: https://github.com/zartbot/ztrace

[16]

gobencher: https://github.com/marketplace/gobencher

[17]

微软教程:使用Go构建无服务器应用: https://docs.microsoft.com/zh-cn/learn/modules/serverless-go/

[18]

termdbms: https://github.com/mathaou/termdbms

[19]

Go语言中文网: https://studygolang.com/go/weekly

[20]

微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91


浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报