Go语言爱好者周刊:第 91 期 — Error 和 String 的题目

2021年4月18日 409点热度 0人点赞 0条评论

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

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

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

由于微信公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。

图片

题图:Go With The Domain

刊首语

网友贡献的一道题:

package main

import "fmt"

type T1 struct {
 String func() string
}

func (T1) Error() string {
 return "T1.Error"
}

type T2 struct {
 Error func() string
}

func (T2) String() string {
 return "T2.String"
}

var t1 = T1{String: func() string { return "T1.String" }}
var t2 = T2{Error: func() string { return "T2.Error" }}

func main() {
 fmt.Println(t1.Error())
 fmt.Println(t1.String())

 fmt.Println(t2.Error())
 fmt.Println(t2.String())

 fmt.Println(t1)
 fmt.Println(t2)
}

以上代码输出什么?

谁在招 Gopher

整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!

1、Go远程工作越来越多了,真羡慕

2、没错,可以全职参与开源语言开发:国人开发的语言 Go+ 团队招人

3、当下最流行的全职开源,你不心动吗?

资讯

1、ION 1.9 发布[3]

分布式实时通信(RTC)系统,基于 Go 和 Flutter。

2、Gitea 1.14.0 发布[4]

Go 开发的 Git 自助服务。

3、基于寄存器 ABI 改造完成[5]

Go 基于寄存器的ABI规范的改造基本完工,平均性能提升 6%。

文章

1、一道 Go 闭包题,面试官说原来自己答错了:面别人也涨知识

本文从一道题引出 Go 中的闭包。这是 Go 语言爱好者周刊第 90 期的一道题目。

2、Goroutine 开启和退出到底做了什么?

在 Go 中,协程就是一个包含程序运行时的信息的结构体,如栈,程序计数器,或者它当前的 OS 线程。调度器还必须注意 Goroutine 的开始和退出,这两个阶段需要谨慎管理。

4、注释竟然还有特殊用途?一文解惑 //go:linkname 指令

别告诉我你还不会。

5、把 Go 当脚本语言用

虽然目前 Go 还未准备好作为脚本语言 “开箱即用” 的特性,用来替代 Python 和 Bash ,但是我们只需要一点点准备工作就可以达到想要的目标。

6、极速精简 Go 版 Logstash

go-zero 生态的一个组件 go-stash。

7、用 Golang 实现 RSA 加密和签名(有示例)

本文介绍 RSA 干了什么,以及我们怎样用 Go 实现它。

8、大佬的思路很清晰:Go+的设计原来是怎么思考的

七牛云 CEO、ECUG 发起人许式伟以「Go+ 与数据科学」 为主题进行了分享,讲述了对数据科学变迁的理解,对新语言 Go+ 的设想和规划,并大胆指出数据科学正迎来爆发期,像字节跳动一样的新型公司只会越来越多。

9、深入 Go 并发原语 — Channel 底层实现

作为 Go 并发原语的第一篇文章,一定绕不开 Go 的并发哲学。从 Tony Hoare 写的 Communicating Sequential Processes 这篇文章说起,这篇经典论文算是 Go 语言并发原语的根基。

10、详解 Go 程序的启动流程,你知道 g0,m0 是什么吗?

Go 程序启动过程解析。

开源项目

1、encore[6]

一个框架,可以快速创建 API 和分布式系统。

2、go-snowflake[7]

基于 Twitter 雪花算法的无锁 ID 生成器。

图片

3、reproxy[8]

Go 实现的极简反向代理。

4、dasel[9]

使用选择符(.)查询和修改数据结构中的字段,支持 JSON, TOML, YAML, XML 和 CSV 等。

5、weaviate[10]

云原生、模块化、实时矢量搜索引擎。

6、inspr[11]

用于简单、快速和安全地开发分布式应用程序的应用网格(app mesh)。

7、gotuna[12]

渐进式 Web 开发框架。

8、fonts[13]

Go 系统字体操作包。

资源&&工具

1、gops[14]

查看正在运行 Go 进程的列表和诊断工具。作者欢迎大家提需求。

图片

2、gitleaks[15]

检测 Git 代码仓库中有没有存入敏感信息,比如密码。

3、pingme[16]

可向多个消息平台和电子邮件发送消息或警报的 cli 工具。

4、播客第 175 期[17]

GopherCon 提案的终极指南。

5、播客第 173 期[18]

聊 Go 应用的发布。

6、scilla[19]

网络信息收集工具。

7、gidevice[20]

Golang 实现的 iOS 设备通信工具。

8、httpit[21]kiyonlin[22] 投稿)

一款基于 fasthttp的 http(s) benchmark 工具,实时统计显示测试结果。

订阅

这个周刊每周日发布,同步更新在Go语言中文网[23]微信公众号[24]

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

图片

wechat

参考资料

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

ION 1.9 发布: https://github.com/pion/ion

[4]

Gitea 1.14.0 发布: https://blog.gitea.io/2021/04/gitea-1.14.0-is-released/

[5]

基于寄存器 ABI 改造完成: https://github.com/golang/go/issues/40724#issuecomment-821758073

[6]

encore: https://github.com/encoredev/encore

[7]

go-snowflake: https://github.com/godruoyi/go-snowflake

[8]

reproxy: https://github.com/umputun/reproxy

[9]

dasel: https://github.com/TomWright/dasel

[10]

weaviate: https://github.com/semi-technologies/weaviate

[11]

inspr: https://github.com/inspr/inspr

[12]

gotuna: https://github.com/gotuna/gotuna

[13]

fonts: https://github.com/go-swiss/fonts

[14]

gops: https://github.com/google/gops

[15]

gitleaks: https://github.com/zricethezav/gitleaks

[16]

pingme: https://github.com/kha7iq/pingme

[17]

播客第 175 期: https://changelog.com/gotime/175

[18]

播客第 173 期: https://changelog.com/gotime/173

[19]

scilla: https://github.com/edoardottt/scilla

[20]

gidevice: https://github.com/electricbubble/gidevice

[21]

httpit: https://github.com/gonetx/httpit

[22]

kiyonlin: https://github.com/kiyonlin

[23]

Go语言中文网: https://studygolang.com/go/weekly

[24]

微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91


推荐阅读

28790Go语言爱好者周刊:第 91 期 — Error 和 String 的题目

这个人很懒,什么都没留下

文章评论