这里记录每周值得分享的Go语言相关内容,周日发布。
本周刊开源(GitHub:polaris/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交issue[2]。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的GCTT组织会进行翻译。
题图:Go在谷歌的使用插图
刊首语
借用DaveCheney的一道测试题作为这次周刊的刊首语。
以下程序打印什么?
packagemainimport(contextfmt)funcf(ctxcontext.Context){context.WithValue(ctx,foo,-6)}funcmain(){ctx:=context.TODO()f(ctx)fmt.Println(ctx.Value(foo))}资讯
1、关于Go语言泛型设计的最新进展和一些问题的说明
前段时间Go官方发布了新的泛型草案,一时间在社区引起了很大的反响,各种关于泛型的文章、讨论涌现出来。8月21日IanLanceTaylor在golang-nuts讨论组总结了泛型设计的最新进展和一些问题的说明。
2、Istio1.5.10发布[3]
Istio是一个由谷歌、IBM与Lyft共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。具体来说,Istio是一个开源服务网格平台,它确保微服务在处理故障时以指定的方式相互连接。这是小版本升级。
3、Kubernetesv1.19.0正式发布[4]
终于,我们迎来了Kubernetes1.19版本,这是年的第二个版本,也是迄今为止最长的发布周期,总共持续20周。它由33项增强功能组成。12个增强功能进入稳定版,18个增强功能进入测试版,13个增强功能进入alpha版。
4、net包将导出ErrClosed以便程序可以可靠的判断当前链接是否已经关闭[5]
从提交可以看到这点。
文章
1、Go热重载工具air不好使了:goproxy.cn的锅?
大家写开源项目还是需要注意下。
2、我擦~字符串转字节切片后,切片的容量竟然千奇百怪
给结论,字符串转字节切片步骤如下:
1)判断是否是常量,如果是常量则转换为等容量等长的字节切片
2)如果是变量,先判断生成的切片是否发生变量逃逸
如果逃逸或者字符串长度32,则根据字符串长度可以计算出不同的容量如果未逃逸且字符串长度=32,则字符切片容量为、踩了Go1.15sync.Map的一个坑[6]
使用1.15的用户可以注意下。
4、微服务的战争:统一且标准化
“微服务的战争”是一个关于微服务设计思考的系列题材,主要是针对在微服务化后所出现的一些矛盾/冲突点,不涉及具体某一个知识点深入。
5、年最佳的后端编程语言会是谁?
Go、Python还是NodeJS等。
6、Go每日一库之go-bindata—静态资源嵌入详解
本文没有一开始给出最佳实践,而是从最简单的做法开始,展示一点一点改进的过程。长度尽量精简,希望你看到最后。
7、手把手教你用ETCD:一篇短文却包含众多知识
一句话概括的话:ETCD是一个基于RAFT的分布式KV存储系统。
8、都说Go可以开启成千上万的Goroutine,那调度器是怎么处理核上任务分配的?
在Go中创建Goroutine既方便又快捷,然而Go在同一时间内最多在一个核上运行一个Goroutine,因此需要一种方法来存放其他的Goroutine,从而确保处理器(processor)负载均衡。
9、容器基础:Cgroup[7]
Cgroup是ControlGroup的缩写,提供对一组进程,及未来子进程的资源限制、控制、统计能力,包括CPU、内存、磁盘、网络。
10、线上Go程序偶尔出现异常怎么办?这个思路可解决你的烦恼
Go项目做的比较大(主要说代码多,参与人多)之后,可能会遇到类似下面这样的问题:
程序老是半夜崩,崩了以后就重启了,我也醒不来,现场早就丢了,不知道怎么定位这压测开压之后,随机出问题,可能两小时,也可能五小时以后才出问题,这我蹲点蹲出痔疮都不一定能等到崩溃的那个时间点啊有些级联失败,最后留下现场并不能帮助我们准确地判断问题的根因,我们需要出问题时第一时间的现场开源项目
1、go-reddit[8]
用于访问RedditAPI的库。
2、modernc/sqlite[9]
一个自包含,无服务器,零配置的事务型SQL数据库引擎的进程内实现。
3、