这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Marta 文件管理器,武汉加油!
给 Mac 用户推荐一个替换 Finder(访达)文件管理器:Marta。
Marta 是一个双窗格文件管理器。大多数时候,你使用两个并排放置的目录窗格。它使你可以快速高效地执行基本文件操作,例如复制或移动文件,因为你可以看到源目录和目标目录,并且可以直接复制或移动文件,而无需复制粘贴。
如果你之前是 Windows 下 TC 的用户,那么看到 Marta,你会感觉很亲切,是的,它们很相似。记得曾经有人说,因为 TC,很多人不愿离开 Windows 阵容,可见 TC 的强大。我曾经也是 TC 的爱好者,今天看到 Marta 很开心,赶紧使用上了,然后推荐给大家。后续我会考虑写文章详细介绍 Marta 的使用。
语言的变化围绕允许具有重叠方法集的接口以及许多其他次要更改(包括 goroutine 现在可以异步抢占)等。
对于 TinyGo 来说,这是个好消息,TinyGo 是一种越来越流行的 Go 编译器,它针对 “small places”(例如微控制器和WebAssembly),并成为 Google 赞助的项目。它的前途一片光明。
3、Starlark:一个可以调用 Go 库函数的 Python 风格的语言
它是一种旨在用作配置语言的语言。Google 有一个该语言的 Go 实现版本。https://github.com/google/starlark-go
官方 MongoDB 驱动程序。
一个长期存在的项目,该项目持续得到频繁的更新,并声称 速度比 net/http快 10 倍。
国内不知道用这个的多不多。
已实现基本 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 。
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
golang指针可以这样理解:本身为一个整型常量,但由于其声明时为指针,因此拥有了特殊的能力,即在其前增加 * ,即可直接访问内存编号为该整型常量的数据。
10、Go1.14 为 time.Timer 定时器带来巨幅性能提升
After 函数从老版本的1.63ms直接下降到了0.11ms,提升相当恐怖。
深挖系列。
很多熟悉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 的火爆。
使用接缝雕刻来拉伸图像的不重要部分,从而允许在调整大小的过程中考虑图像的内容。
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 工程模板。
Go 的异常用法:GUI。Go GUI 库不少,但哪个你用起来顺手呢?欢迎推荐。
该播客提到了以下内容:
- Enlightenment Window Manager - 播客中提到的 Windows 管理器
- Shiny Go Bindings - 用 Go 访问 Shiny 的方法
- Qt Go Bindings - Go 绑定 Qt
- andlabs UI - 一个 Go GUI 库
- Fyne - 一个 Go GUI 库
- Wails - 使用 Vue.js 的 Go GUI 库
- Awesome Go - 包含了 GUI 库的各种 Go 库大全
- Hands on GUI Application Development in Go - Andrew 的书,介绍了 Go GUI 开发
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/ (英文)
系列教程,设计一个框架。
左神出品。本书的主要内容可以分成四个主要部分,分别是编译原理、运行时、基础知识和进阶知识,这四部分几乎可以覆盖 Go 语言从编译到运行的方方面面,让我们对 Go 语言有更加整体和深刻的认识。
这个周刊每周日发布,同步更新在Go语言中文网、微信公众号 和 今日头条。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。