Skip to content
On this page

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

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

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

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

题图:Stack Overflow 2021 年调查报告

刊首语

上期题目由网友「爱笑」投稿,以下代码输出什么,你知道为什么吗?

go
package main

import (
	"fmt"
)

func main() {
	nums := []int{1, 2, 3, 4, 5, 6, 7}
	k := 3
	rotate(nums, k)
	fmt.Println(nums)
}

func rotate(nums []int, k int) {
	k = k % len(nums)
	nums = append(nums[len(nums)-k:], nums[0:len(nums)-k]...)
}

A:[5 6 7 1 2 3 4] B:[1 2 3 4 5 6 7] C:[4 5 6 7 1 2 3]

正确答案是 B。主要原因是 append 后的 nums 是新数组,它并不会影响 main 函数中的 nums。如果最后不是赋值给 nums,而是使用 copy,结果就是 A 了:

go
copy(nums, append(nums[len(nums)-k:], nums[0:len(nums)-k]...))

本期是一道关于 json 的题目,以下代码输出什么?

go
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var p *int
	b, err := json.Marshal(p)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(b))
}

A:panic;B:编译错误;C:json marshal 报错;D:null

资讯

1、Go 1.16.7 和 Go1.15.15 发布

同时,Go 1.17 发布了 RC2,离正式版发布不远了。

2、Ent 0.9.0 发布

Facebook 出品,新的 Upsert API。

3、Stack Overflow 发布 2021 年调查报告

Go 在最想学习榜中排名第四。

4、gohugo v0.87.0 发布

支持时间、日期以及货币的本地化。

5、Kubernetes 1.22 版本发布

号称达到新的巅峰。

6、TIOBE 发布 8 月编程语言榜单:Go 排名如何?

大家比较看好 Go,但感觉这榜单。。。

谁在招 Gopher

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

文章

1、Go 程序中的非 Go 后缀文件

Go1.16 后有了更多选择。

2、Go 标准库 encoding/json 真的慢吗?

大部分时候,标准库是最好的选择。

3、用 Go 实现类似 Nginx 的 Access Log

看看是如何处理的。

4、重磅!GitHub 为 Go 社区带来安全支持

安全问题越来越受到重视。

5、只用 3 步构建 Go docker 最小镜像

你一般怎么构建呢?

6、你负责的服务熔断了,还不赶紧进来看看。

微服务必备。

7、Go 基于 I/O 多路复用的 TCP 协议流解析实践

基于Go经典的阻塞I/O模型实现了一个基于TCP流的自定义协议的解析

8、两款 go 开发实用工具

方便日常使用。

开源项目

1、virgo

基于图的配置语言。

2、cloudflare-go

CloudFlare API 的 Go 库。

3、v2

简约而有主见的 Feed 阅读器。

4、phonenumbers

Google 电话号码解析库的 Go 移植版。

资源&&工具

1、cxgo

将 C 转为 Go 的工具,纯 Go 实现。

2、 Peanut

为开发和测试管道轻松地部署数据库和服务。

3、chezmoi

安全地在多个不同的机器上管理你的 dotfiles。

4、播客第 191 期

Go 语言实践观点集合。

订阅

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

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

wechat

Released under the MIT License.