Go语言爱好者周刊:第 66 期 — 一道关于 fmt 的题
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2] 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
由于微信公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。
题图:plenti,又一个 Go 语言实现的静态网站生成器。
刊首语
昨天是 1024,大家没有加班吧!
今天这道题,你看看输出啥?
package main
import "fmt"
type T struct {
x int
}
func (t T) String() string { return "boo" }
func main() {
t := T{123}
fmt.Printf("%v\n", t)
fmt.Printf("%#v\n", t)
}
资讯
1、为 Go 尽一份力的时候到了:Go 官方 2020 年开发者调查开启
Go 项目组正在研究人们关于 Go 的经验和想法。您的反馈将帮助他们改进现有工具,并确定新功能的优先级,确保所有 Go 开发人员获得更好的体验。一旦调查结束,他们将与 Go 社区公开分享汇总的结果。
2、validating 2.0 发布[3]
Go 库,用于验证结构,map 和切片。带有各种各样的验证器工厂(它们生成实际的验证),包括相等性,范围,包含在一组值中,长度等。
3、gomodifytags 1.11.0 发布[4]
这个工具你日常工作可能一直在用,只是不知道是它干的。如果要在结构字段中编辑,更新或添加标签,则使工作变得更轻松。与 Vim,Atom,Emacs 和 VS Code 集成。
一个让业务开发效率提高 10 倍的 Go 库。
文章
1、卧槽!一道关于 json 和 slice 的题难倒了 80% 的人
这是上期周刊的问题解答。
官方的弱爆了。。。
拾遗主要是收集和 golang 相关的琐碎知识。
在 Go 中创建的所有 Goroutine 都会被一个内部的调度器所管理。Go 调度器尝试为所有的 Goroutine 分配运行时间,并且在当前的 Goroutine 阻塞或者终止的时候,Go 调度器会通过运行 Goroutine 的方式使所有 CPU 保持忙碌状态。这个调度器实际上是作为一个特殊的 Goroutine 运行的。
5、分析字节跳动高级 Go 工程师的要求,知晓自己的努力方向
来自一个 Go 招聘的公公众号。专门分享 Go 求职招聘等。
在本教程中,我们将就 Golang 和 Rust 进行比较和对比,评估这两种编程语言的性能,并发性,内存管理和整体开发人员体验。我们还将概述这些元素,以帮助您一目了然地为项目选择正确的语言。
7、Go 已经开始大爆发了 ?专注于 Go 职场、招聘和求职
Go 圈的朋友应该能发现,这两年 Go 受到越来越多的关注。我们不提跟国外,只看国内。去年年底,鹅厂公布了他们使用的 Top 语言,其中 Go 排在了第三位。据内部人士透露,今年有望进入第二。大厂大量使用 Go,这是一个很好信号。
8、面试官:知道 MVCC 吗?在 etcd 中的如何实现的
在数据库领域,面对高并发环境下数据冲突的问题,业界常用的解决方案有两种:避免冲突和允许冲突。
Go 语言中的 select 语句用于监控并选择一组 case 语句执行相应的代码。
time.Sleep 内部代码实现大有文章,每个 Go 版本的 timer 的实现都有所不同,本文基于 Go1.14,分别从宏观和围观介绍一遍主要调度过程。
开源项目
1、hc[5]
一个轻量级的框架,用于在 Go 中开发 HomeKit 配件。HomeKit 是 Apple 的框架,用于管理 Apple 设备中的“智能家居”设备,您可以使用 HomeKit 附件协议(HAP)来为您选择的硬件创建 HomeKit 桥。
2、systray[6]
一个跨平台的 Go 库,用于在通知区域中放置图标和菜单。
3、Crowdsec[7]
开源的轻量级代理,可检测并响应不良行为。它还会自动受益于我们全球社区范围内的 IP 信誉数据库。
4、scany[8]
Go 实现的用于将数据从数据库扫描到 Go 结构的库。
5、gobot[9]
使用 Go 编程语言的 IOT 框架。
6、gweb[10]
用纯 Go 编写并编译成 WASM 的浏览器游戏库。
7、bluge[11]
Go 实现的文本索引库。
8、bot2048[12]
2048游戏机器人玩家。Go 语言实现。对算法感兴趣的可以看该文:https://thomas-joly.com/bot-2048-create-an-artificial-player/。
资源&&工具
1、verless[13]
一个简单、轻量级静态网站生成器。轮子有点多。这里还有一个 plenti[14],这个感觉比 verless 更正规?
2、Chronos[15]
用于 Go 语言的静态竞争检测器。作者建议和 go race 结合使用。
3、 gof[16]
GoF 23 种设计模式的 Go 实现。
4、panoptes-stream[17]
yahoo 开源的云原生分布式流网络遥测工具。
5、cassler[18]
SSL 证书验证工具 cassler。
6、repull[19]
使用较新版本的镜像重新启动 Docker 容器的工具。
7、3d-gopher-maze[20]
基于终端的简单 3D 迷宫爬行游戏。
8、dnsping[21]
检查 DNS 服务器的数据包丢失和延迟问题。
7、goshs[22]
Go 语言编写,替代 Python 的 SimpleHTTPServer,具有许多功能和出色的设计。
8、pixlet[23]
为基于像素的显示器构建应用程序。
订阅
这个周刊每周日发布,同步更新在Go语言中文网[24]和微信公众号[25]。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。
参考资料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]validating 2.0 发布: https://github.com/RussellLuo/validating
[4]gomodifytags 1.11.0 发布: https://github.com/fatih/gomodifytags
[5]hc: https://github.com/brutella/hc
[6]systray: https://github.com/getlantern/systray
[7]Crowdsec: https://github.com/crowdsecurity/crowdsec
[8]scany: https://github.com/georgysavva/scany
[9]gobot: https://github.com/hybridgroup/gobot
[10]gweb: https://github.com/life4/gweb
[11]bluge: https://github.com/blugelabs/bluge
[12]bot2048: https://github.com/lunatikub/bot2048
[13]verless: https://github.com/verless/verless
[14]plenti: https://github.com/plentico/plenti
[15]Chronos: https://github.com/amit-davidson/Chronos
[16]gof: https://github.com/qiualiang/gof
[17]panoptes-stream: https://github.com/yahoo/panoptes-stream
[18]cassler: https://github.com/msfidelis/cassler
[19]repull: https://github.com/jdevelop/repull
[20]3d-gopher-maze: https://github.com/necrophonic/3d-gopher-maze
[21]dnsping: https://github.com/fortio/dnsping
[22]goshs: https://github.com/patrickhener/goshs
[23]pixlet: https://github.com/tidbyt/pixlet
[24]Go语言中文网: https://studygolang.com/go/weekly
[25]微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91