Go语言爱好者周刊:第 150 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:各大语言收入排行,来自 StackOverflow 最新调研
刊首语
上期题目又是惨不忍睹,正确率 31%。以下代码输出什么?
package main
import "fmt"
func main() {
var p [100]int
var m interface{} = [...]int{99: 0}
fmt.Println(p == m)
}
A:true;B:false;C:panic;D:编译失败
正确答案:A。
网友「上弦月」的解释挺到位的,直接引用;
A value x of non-interface type X and a value t of interface type T are comparable when values of type X are comparable and X implements T. They are equal if t's dynamic type is identical to X and t's dynamic value is equal to x. ——以上内容来自 https://go.dev/ref/spec#Operators
个人理解:
- interface类型变量与非interface类型变量判等时,首先要求非interface类型实现了接口,否则编译不通过(本题接口方法集为空,我们认为所有类型都实现了该接口)
- 满足上一条的前提下,interface类型变量的动态类型、值均与非interface类型变量相同时,两个变量判等结果为true,结合array判等规则,答案为true
我看到题目的时候,感觉答案要么是true、要么是编译不过。试了一下发现能比较,然后去翻文档,发现了上面提到的第一个知识点,又是涨知识的一天。
本期来一道简单的题目。以下代码输出什么?
package main
import "fmt"
func main() {
fmt.Println(09)
}
A:09;B:9;C:11;D:编译不通过
资讯
轻松 Render JSON,XML,二进制数据和 HTML 模板响应。
一个构建现代 CLI APP 的框架。
流处理。
Panic 堆栈跟踪解析器和调试工具。
Google 电话号码解析库的 Go 移植版。
Go 中基于规则的隧道。
文章
在使用Go开发的后台服务中,对于错误处理,一直以来都有多种不同的方案,本文探讨并提出一种从服务内到服务外的一个统一的传递、返回和回溯的完整方案,抛砖引玉,希望与大家一起讨论分享。
项目中遇到了可重入锁的需求和实现,具体记录下。
一款 Go 语言 的打桩框架,目标是让用户在单元测试中低成本的完成打桩,从而将精力聚焦于业务功能的开发。
第 148 期周刊的题目解析。
这是 Go1.19 将实现的功能。
开源项目
1、h3-go
层次空间索引系统。
2、critical
TCL 解析器。
3、hertz
一个 Golang 微服务 HTTP 框架。
4、gambas
Go 的数据分析工具,类似 Python 中的 pandas。
5、ksql
简单、强大的 SQL 库。这里是一篇介绍文章:https://betterprogramming.pub/golang-sql-problems-with-existing-libraries-145a037261b8。
资源&&工具
1、viddy
一个现代的 watch 命令。
2、tproxy
分析 TCP 连接的工具
英文的。
4、K8S 指南
GitHub 开源。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。