Go语言爱好者周刊:第 85 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:女神节快乐
刊首语
以下程序输出什么?(来自 Go101 作者)
package main
func main() {
var x chan<-chan error // nil
var y chan(<-chan error) // nil
println(x == y)
}
A:true;B:false;C:无法编译;D:运行时 panic
谁在招 Gopher
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
6、【内推】一大波 Go 相关职位涌来:金山办公 wps 招聘
资讯
Go 代码安全检查器。
ngork 的替代品。轻松将服务暴露到公网或其它网络,穿透内网、代理和 NAT。
从 SQL 产生类型安全的 Go 代码。
招聘季,选工作挺重要。
Go 排名第 16。
文章
Go 生态系统有许多流行的日志库,选择一个可以在所有项目中使用的日志库对于保持最小的一致性至关重要。易用性和性能通常是我们在日志库中考虑的两个指标。
Go 是一门通用编程语言,Go1.5 实现了自举,也就是说,Go 语言是用它自身实现的。经过十来年的发展,开源界使用 Go 语言实现的编程语言不少,那它们发展的怎么样?本文进行一下梳理。
网络安全公司 Intezer 在近日发布的一份报告中称,自 2017 年以来,用 Go 编程语言编写的恶意软件数量在过去几年中急剧增加了约 2000% 。
现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。
七牛 Go+,想要进军数据科学领域。
Goroutine 很轻,它只需要 2Kb 的内存堆栈即可运行。另外,它们运行起来也很廉价,将一个 Goroutine 切换到另一个的过程不牵涉到很多的操作。在深入 Goroutine 切换过程之前,让我们回顾一下 Goroutine 的切换在更高的层次上是如何进行的。
7、Go:使用 Delve 和 Core Dump 调试代码
core dump 是一个包含着意外终止的程序其内存快照的文件。这个文件可以被用来事后调试(debugging)以了解为什么会发生崩溃,同时了解其中涉及到的变量。通过 GOTRACEBACK
,Go 提供了一个环境变量用于控制程序崩溃时生成的输出信息。这个变量同样可以强制生成 core dump,从而使调试成为可能。
Go 的反射机制带来很多动态特性,一定程度上弥补了 Go 缺少自定义范型而导致的不便利。
关于 context 的一点最佳实践。
一般新技术的出现都是为了解决现有技术存在的问题或者可以提供更优雅方便的实现方式,那我们就要想想 contex 包能解决什么问题?
11、Go mod 七宗罪
曹大还写了一篇:吐槽 Go mod。
12、Go 面试题: new 和 make 是什么,差异在哪?
在 Go 语言中,有两个比较雷同的内置函数,分别是 new 和 make 方法,其主要用途都是用于分配相应类型的内存空间。
13、内存管理设计精要
系统设计精要是一系列深入研究系统设计方法的系列文章,文中不仅会分析系统设计的理论,还会分析多个实际场景下的具体实现。
开源项目
编写创造艺术的代码。如下代码:
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetBackground(generativeart.White)
c.FillBackground()
c.SetColorSchema([]color.RGBA{
{0xCF, 0x2B, 0x34, 0xFF},
{0xF0, 0x8F, 0x46, 0xFF},
{0xF0, 0xC1, 0x29, 0xFF},
{0x19, 0x6E, 0x94, 0xFF},
{0x35, 0x3A, 0x57, 0xFF},
})
c.Draw(generativeart.NewRandomShape(150))
c.ToPNG("randomshape.png")
}
生成下面的图片:
作者还写了一本同名书。
适用于 Go 的 Mongo DB兼容嵌入式数据库和工具包。好吧,其实也不能完全算是轮子。
用 Go 编写的高性能 PHP 应用程序服务器,负载均衡器和流程管理器。
4、sedna
基于 kubeedge 的 AI 套件。
简单的本地 go git-crypt 实现。目前还是不稳定版本。
使用 Go 开发的类 Twitter 后端。
7、mini
一个 Go 编写的简易文本编辑器。
8、lieu
Go 实现的社区搜索引擎。
资源&&工具
1、新书:Network Programming with Go
3 月即将出版,目前已经预售了。跟之前网上开源的版本不是一个作者。
2、sq
通用的“瑞士军刀”数据工具。
3、song2
Go 实现的快速高斯模糊。
4、chkb
可以将你的键盘变成可编程键盘的 Go 工具。
使用 Go 和 yaml 实现的 Kubernetes 模式。
中文版也快要出来了。
Clever 公司的 Go 使用情况。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。