Skip to content
On this page

Go语言爱好者周刊:第 29 期 ​

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

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

鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。

题图:Marta 文件管理器,武汉加油!

刊首语 ​

给 Mac 用户推荐一个替换 Finder(访达)文件管理器:Marta。

Marta 是一个双窗格文件管理器。大多数时候,你使用两个并排放置的目录窗格。它使你可以快速高效地执行基本文件操作,例如复制或移动文件,因为你可以看到源目录和目标目录,并且可以直接复制或移动文件,而无需复制粘贴。

如果你之前是 Windows 下 TC 的用户,那么看到 Marta,你会感觉很亲切,是的,它们很相似。记得曾经有人说,因为 TC,很多人不愿离开 Windows 阵容,可见 TC 的强大。我曾经也是 TC 的爱好者,今天看到 Marta 很开心,赶紧使用上了,然后推荐给大家。后续我会考虑写文章详细介绍 Marta 的使用。

资讯 ​

1、Go1.14 RC1 发布

语言的变化围绕允许具有重叠方法集的接口以及许多其他次要更改(包括 goroutine 现在可以异步抢占)等。

2、TinyGo 成为 Google 的赞助项目

对于 TinyGo 来说,这是个好消息,TinyGo 是一种越来越流行的 Go 编译器,它针对 “small places”(例如微控制器和WebAssembly),并成为 Google 赞助的项目。它的前途一片光明。

3、Starlark:一个可以调用 Go 库函数的 Python 风格的语言

它是一种旨在用作配置语言的语言。Google 有一个该语言的 Go 实现版本。https://github.com/google/starlark-go

4、MongoDB Go 驱动程序 1.3 发布

官方 MongoDB 驱动程序。

5、fasthttp 1.9 发布

一个长期存在的项目,该项目持续得到频繁的更新,并声称 速度比 net/http快 10 倍。

6、vim-go 1.22 发布

国内不知道用这个的多不多。

7、gopls 发布 0.3.0 版本

已实现基本 IDE 功能。

8、TIOBE 公布了 2020 年 2 月编程语言排行榜,Go 的排名你还满意吗?

Go 排名第 11。

文章 ​

1、Go1.14 都还没发布,官方已经准备 Go 1.15 了:它有哪些新东西?

已经临近 Go1.14 发布了,计划在 2 月份发布,RC1 候选版本已经准备好了。根据 Go 2, here we come! 这篇文章描述的过程,这到了我们开发和发布周期考虑的时候,我们是否希望在下一个版本中(Go1.15)增加语言和库的更改,并计划于今年 8 月份发布。

2、学习 Go 编程的十大在线资源及新手如何学习 Go 语言

学习任何东西,基础都很重要。基础就好比建筑的地基,只有地基牢固了,才能建成高楼大厦。学习编程语言亦是如此。很多人喜欢一上来就学习各种框架,其实那些框架对你来说都是工具,你自己的基础好,懂得了它们的原理,自己也有能力创造更优秀的框架。

3、Goroutine + Channel 是 Go 的招牌,但必须留意被忽略的 Channel

该文章提出了一个关于 Goroutines 如何出现内存泄露的情景。

4、Go 语言 2020 年的状态:回顾 Go1.12 以来的变化

本文整理自 Slide:https://speakerdeck.com/campoy/the-state-of-go-2020 ,分析 Go1.13 和 Go1.14 的新特性。这里是演讲视频:https://www.youtube.com/watch?v=0c-1KJwSMCw

5、一个资源,只希望需要时仅加载一次,即懒加载,Go 怎么实现?

Go语言在设计上对同步(Synchronization,数据同步和线程同步)提供大量的支持。

6、Go 之禅:Dave Cheney 大神告诉你编写简单、可读、可维护 Go 代码的十个工程经验

编写简单、可读、可维护 Go 代码的十个工程经验,大神 Dave Cheney 于 2020/02/03 在 GopherCon Israel 2020 的演讲。

7、Discord: 最终,我们放弃了GO,迁移至Rust,特性使然

本文阐述了 Discord 从 Go 切换至 Rust 的深层原因,并分析了在内存管理中 Go 面临的一些固有问题,作者同时对比了 Go 和 Rust 在 Discord Read States 服务中的性能。原文:https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f 。

8、GraphQL Go 基于Golang实践

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

9、Golang 结构体指针解析

golang指针可以这样理解:本身为一个整型常量,但由于其声明时为指针,因此拥有了特殊的能力,即在其前增加 * ,即可直接访问内存编号为该整型常量的数据。

10、Go1.14 为 time.Timer 定时器带来巨幅性能提升

After 函数从老版本的1.63ms直接下降到了0.11ms,提升相当恐怖。

11、Go 之读懂 map 的底层设计

深挖系列。

12、Go 中必须谈论的四个迷点

很多熟悉Go的程序员们都会说到 Go 是一门很简单的语言,话虽如此,但实际上 Go 的简单是基于复杂底层的极简包装。

13、Go 每日一库之 log

在日常开发中,日志是必不可少的功能。虽然有时可以用fmt库输出一些信息,但是灵活性不够。Go 标准库提供了一个日志库log。本文介绍log库的使用。

开源项目 ​

1、mouselog

一个基于 Web 的工具,用于记录,可视化和分析鼠标事件,例如移动和点击。微软出品。

2、httpretty: 在终端上漂亮地打印出 HTTP 请求

受 curl 的 --verbose 功能启发,调试时很方便。

3、Fiber: 一个 Express.js 风格的 HTTP Web 框架

又一个 Web 框架,基于 Fasthttp。如果你熟悉 Node.js,那这个框架肯定适合你。很有意思的是,这个项目时外国人写的,但提供了中文的 README,看来外国人也知晓国内 Go 的火爆。

4、Caire: 内容感知图像调整库

使用接缝雕刻来拉伸图像的不重要部分,从而允许在调整大小的过程中考虑图像的内容。

5、go-syslog:极速 Syslog 解析器

3.0 版本引入了最初的 RFC 3164(BSD Syslog协议)支持。

6、cast

在 Go 中从一种类型安全转换为另一种类型。进行 Web 开发获取请求参数或从配置中读取数据时,经常要进行类型转换,该库可以值得你拥有。

7、grabana

用 Go 代码快速创建 grafana dashboards。

8、rose

在 HTML 中嵌入和运行 Go 代码。

9、tbls

用于记录数据库文档的 CI 友好工具,Go 语言实现。

10、crawlab

基于 Golang 的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP等多种编程语言以及多种爬虫框架。这里可以查看演示 Demo。

11、go-spew

为 Go 数据结构实现深层漂亮的打印,以帮助调试。

12、wails

使用 Go 和 Web 技术创建桌面应用程序。

13、websocket

这是 2019 年新开发的 WebSocket 库,官方也推荐这个库,在性能方面,比经典的 https://github.com/gorilla/websocket 更好,推荐给大家。

14、go-starter

adobe 的 go 工程模板。

资源&&工具 ​

1、Go Time 第 116 期

Go 的异常用法:GUI。Go GUI 库不少,但哪个你用起来顺手呢?欢迎推荐。

该播客提到了以下内容:

2、O'RLY 封面生成器

O'RLY Cover Generator 是模仿书的封面生成器,以 Golang 和 Vue.js 实现,支持包括 CJK 在内的多种语言。可以作为学习的资料。项目源码地址:https://github.com/nanmu42/orly

3、Go 代码的高级调试技术(英文)

来自一个演讲。源视频连接是 youtube 的,B 站视频连接:https://www.bilibili.com/video/av87482478/

4、garnish: 用 Go 语言编写的简单 varnish 实现

这里有一篇文章:https://developer20.com/garnish-simple-varnish-in-go/ (英文)

5、7天用Go从零实现Web框架Gee教程

系列教程,设计一个框架。

6、Go 语言设计与实现

左神出品。本书的主要内容可以分成四个主要部分,分别是编译原理、运行时、基础知识和进阶知识,这四部分几乎可以覆盖 Go 语言从编译到运行的方方面面,让我们对 Go 语言有更加整体和深刻的认识。

订阅 ​

这个周刊每周日发布,同步更新在Go语言中文网、微信公众号 和 今日头条。

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

wechat

Released under the MIT License.