Go语言爱好者周刊:第 81 期

polaris · · 8300 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

这里记录每周值得分享的 Go 语言相关内容,周日发布。 本周刊开源(GitHub:[polaris1119/golangweekly](https://github.com/polaris1119/golangweekly)),欢迎投稿,推荐或自荐文章/软件/资源等,请[提交 issue](https://github.com/polaris1119/golangweekly/issues) 。 鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue081/cover.png) 题图:vscode-go 插件 v0.22.0 默认启用 gopls。 ## 刊首语 这期周刊两道题。 题一:以下代码输出什么? ```go package main import ( "fmt" ) type MS struct { Name string Cgs int } func main() { hashRun := make(map[string]*MS) mss := []MS{ MS{Name: "m", Cgs: 100}, MS{Name: "m", Cgs: 1}, } for _, ms := range mss { if h, ok := hashRun[ms.Name]; ok { h.Cgs += ms.Cgs } else { hashRun[ms.Name] = &ms } } for _, ms := range hashRun { fmt.Println(ms.Cgs) } } ``` A:101;B:100;C:1;D:2 题二:下面代码输出什么? ```go package main import ( "fmt" ) func main() { nums := []int{1, 2, 3, 4, 5} sum := 0 for i, n := range nums { i = 6 sum += n } fmt.Println(sum) } ``` A:1;B:15;C:panic index out of range;D:doesn’t compile ## 谁在招 Gopher 整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布! 1、[腾讯云存储/NoSQL 招聘 Go:腾讯喜欢开源作者](https://mp.weixin.qq.com/s/1b_c_HMecePUkf_OZ3jviw) 2、[金山云招这么多 Gopher?福利还真香](https://mp.weixin.qq.com/s/ct_W79AS7iWmXV2LW1bNzQ) ## 资讯 1、[Go 1.15.8 发布](https://mp.weixin.qq.com/s/sXJDOC5bhqfpI3qieCXi1g) Go 官方发布了 Go 1.15.8 和 Go1.14.15,这是小版本更新。主要修复一些 bug。 2、[ent 0.6 发布](https://entgo.io/) facebook 出品的 Entity 框架,简单而强大的 ORM,用于建模和查询数据。 3、[官博:VSCode Go 扩展默认将启用 gopls](https://docs.studygolang.com/blog/gopls-vscode-go) VSCode 值得拥有。 4、[O’Reilly Go 新书《Learning Go》预售](https://www.amazon.com/Learning-Go-Idiomatic-Real-World-Programming/dp/1492077216/) 真实世界 Go 编程的惯用方法,英文版。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue081/learning-go.jpg) 5、[Go 泛型提案进入“likely accept”阶段](https://github.com/golang/go/issues/43651#issuecomment-772720103) 真的不远了。 6、[gocenter 不建议使用了](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/) JFrog 在 5 月 1 日将关闭 Bintray,JCenter,GoCenter 和 ChartCenter 服务,使用 JFrog GoCenter 作为 GOPROXY 的 gopher 可以切换到其他 GOPROXY 服务。 ## 文章 1、[10 年 Java 经验者:你应该尝试 Go 的 7 个理由](https://mp.weixin.qq.com/s/UCtXcFr4XdE8WwJYK016gg) 本文作者是一位工作了 20+ 年的工程师,其中 10+ 年使用 Java,7+ 年使用 C#,最近 3+ 年使用 Go。文章的观点是作者的个人总结,提倡你尝试并使用 Go 语言。目前作者已经不使用 Java 和 C# 了。 2、[苦于没有 Go 实战项目?也许本文的一些想法可以试试](https://mp.weixin.qq.com/s/iAPe91YZEhVQZJ3QupDGFw) 实践是最好的学习!但新手学习完 Go 基础后,却不知道如何进行实践,因为很多人工作中还没有机会使用 Go。这里是一些对初学者友好的项目和资源,可以作为你项目实践的基础,甚至在将来项目中使用。 3、[Go 开发者 Top 6 IDE:你知道几个,又用哪个?](https://mp.weixin.qq.com/s/-z3jyFpsHh67MfPc4V9QWQ) 这个 Top 排行,没有直接数据支持,凭直觉的,哈哈哈哈哈。(其实也结合了部分网上资料,比如 2019 年官方的调查结果)。 4、[图解 Go GOMAXPROCS 和实时更新](https://mp.weixin.qq.com/s/Zqh6eFRo5TU01kQg35Hbdw) GOMAXPROCS 控制着同时执行代码的 OS 线程的最大数量。这(GOMAXPROCS 值的设定)在程序启动期间,甚至在程序运行期间完成。一般来说,Go 将这个值设置为可用逻辑 CPU 的数量,但并不总是这样。 5、[怎么知道某个 API 是在哪个 Go 版本添加的?这个功能如何实现的](https://mp.weixin.qq.com/s/kbIhf3MRphlT_YxrSMKE6g) 因为 Go 的兼容性做的很好,很多人不太关心 Go 的具体版本。然而有时候可能会涉及到版本的问题,比如你想使用 strings.Builder,Go 版本就必须 >= 1.10,但以下代码在 Go1.10 却编译不通过。 [一文详解如何在调试过程中查找 Goroutine](https://mp.weixin.qq.com/s/3dKlH8tfopLYYGdUW8lN_A) Goroutines 是大多数用 Go 编写的程序的重要组成部分。但是,使用大量 goroutines 会使程序难以调试。那怎么办?在此博文中,我们将介绍如何使用自定义数据为 goroutine 加上标签。 7、[深度解析 Sentinel Go 滑动窗口统计结构的设计](https://mp.weixin.qq.com/s/ax1lEicUDysFgcRgsou2Bg) 本文主要分析 Sentinel Go 流量指标统计底层滑动窗口的实现。 8、[四舍五入在 Go 语言中为何如此困难](https://mp.weixin.qq.com/s/hEHLOcvmUynK5eqJ1OhbCw) 四舍五入是一个非常常见的功能,在流行语言标准库中往往存在 Round 的功能,它最少支持常用的 Round half up 算法。 9、[在校生的万字长文:gRPC 实操指南(golang)](https://mp.weixin.qq.com/s/ZUQQEn4SVLYcIdbW-6YFZQ) RPC 即远程调用协议,简单来说就是调用远程的函数。 10、[Go - 实现项目内链路追踪](https://mp.weixin.qq.com/s/IGYiCWvrHZUKRS2V__9R_A) 为什么项目内需要链路追踪? 11、[Go channel 的妙用](https://mp.weixin.qq.com/s/jAUfqu-5nbs8hcua_F7ueQ) 昨天在内网上看到一篇讲数据库连接的文章,列出了一些 sql 包的一些源码,我注意到其中取用、归还连接的方式非常有意思——通过临时创建的 channel 来传递连接。 12、[我做了一个Go语言的微服务工具包](https://mp.weixin.qq.com/s/wyysxxZnUXY_O_ZrckdSfw) 为了表达我对这种语言的热爱,我开发了一个工具包,以帮助希望使用 Go 来增强微服务的其他开发人员。 ## 开源项目 1、[localizer](https://github.com/razor-1/localizer) Go 本地化框架。 2、[go-tagexpr](https://github.com/bytedance/go-tagexpr) 字节跳动出品,一个有趣的 go struct 标签表达式语法,用于字段验证等。 3、[go-fluent-ffmpeg](https://github.com/modfy/go-fluent-ffmpeg) fluent-ffmpeg 的 Go 语言实现。FFMPEG 是视频处理和编辑的命令行瑞士军刀。 4、[notify](https://github.com/nikoksr/notify) 发送通知到各种消息服务。支持 Discord, Microsoft Tems, Slack, Telegram, Pushbullet 和 Email 等。 5、[go-mysql-server](https://github.com/dolthub/go-mysql-server) 新轮子:纯 Go 实现的 mysql server 引擎。 6、[cdb](https://github.com/jbarham/cdb) DJ Bernstein 的 cdb 常量数据库库的 Pure Go 实现。 7、[pongo2](https://github.com/flosch/pongo2) 可用于 Go 的类 Django 模板语法的模板语言。 8、https://github.com/jfyne/live 仅使用 Go 及其模板来编写交互式、实时 Web 应用程序,无需 js。 9、[s3fs](https://github.com/jszwec/s3fs) Go1.16 filesystem 接口的 S3 存储实现。 10、[eventually-go](https://github.com/eventually-rs/eventually-go) Go event sourcing 框架。 11、[franz-go](https://github.com/twmb/franz-go) 纯 Go 编写的全功能 kafka 客户端。 12、[macdriver](https://github.com/progrium/macdriver) 适用于 Go 的原生Mac API。 13、[paco](https://github.com/pacolang/paco) Go 语言实现的静态编译型语言,目标是 C。 ## 资源&&工具 1、[ticker](https://github.com/achannarasappa/ticker) 实时更新和位置跟踪的终端股票行情工具,Go 语言实现。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue081/ticker.gif) 2、[yq](https://github.com/mikefarah/yq) 便携式命令行 YAML 处理器。[jq](https://github.com/stedolan/jq) 是从命令行使用 JSON 的流行工具 — 而 yq 使用 YAML。 3、[gapid](https://github.com/google/gapid) Google 开源的图形 API 调试器,不过目前开发不活跃。 4、[Walrus](https://github.com/Clivern/Walrus) Go 实现的快速,安全,可靠的系统备份工具,可备份诸如 MySQL,PostgreSQL,Redis,etcd 等。 5、[油管视频](https://www.youtube.com/playlist?list=PLLf6iaZKV_xsp2EKR7cgRZFW5u9yVuzBi) 精通 Go 标准库系列。 6、[眼睛会跟着鼠标移动的 Gopher](https://mp.weixin.qq.com/s/PgV2FRTmAOS6j3Oq3j83KA) 网址:<https://egonelbre.com/js/gopher/>,canvas 实现的。 7、[网址分享](https://instamock.tcardenas.me/) 为指定 Go 接口定义自动生成对应的接口实现。 8、[golang-cheat-sheet](https://github.com/a8m/golang-cheat-sheet) Go 语法速查表。 ## 订阅 这个周刊每周日发布,同步更新在[Go语言中文网](https://studygolang.com/go/weekly)和[微信公众号](https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91)。 微信搜索"Go语言中文网"或者扫描二维码,即可订阅。 ![wechat](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/wechat.png)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

8300 次点击  
加入收藏 微博
9 回复  |  直到 2021-03-02 15:14:21
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传