Go语言爱好者周刊:第 107 期
这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于一些人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Stack Overflow 2021 年调查报告
刊首语
上期题目由网友「爱笑」投稿,以下代码输出什么,你知道为什么吗?
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 了:
copy(nums, append(nums[len(nums)-k:], nums[0:len(nums)-k]...))
本期是一道关于 json 的题目,以下代码输出什么?
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
资讯
同时,Go 1.17 发布了 RC2,离正式版发布不远了。
Facebook 出品,新的 Upsert API。
3、Stack Overflow 发布 2021 年调查报告
Go 在最想学习榜中排名第四。
支持时间、日期以及货币的本地化。
号称达到新的巅峰。
大家比较看好 Go,但感觉这榜单。。。
谁在招 Gopher
整理近期的 Go 职位。有招聘需求可以到「Go招聘」发布!
文章
Go1.16 后有了更多选择。
大部分时候,标准库是最好的选择。
3、用 Go 实现类似 Nginx 的 Access Log
看看是如何处理的。
安全问题越来越受到重视。
你一般怎么构建呢?
微服务必备。
基于Go经典的阻塞I/O模型实现了一个基于TCP流的自定义协议的解析
方便日常使用。
开源项目
1、virgo
基于图的配置语言。
CloudFlare API 的 Go 库。
3、v2
简约而有主见的 Feed 阅读器。
Google 电话号码解析库的 Go 移植版。
资源&&工具
1、cxgo
将 C 转为 Go 的工具,纯 Go 实现。
2、 Peanut
为开发和测试管道轻松地部署数据库和服务。
3、chezmoi
安全地在多个不同的机器上管理你的 dotfiles。
Go 语言实践观点集合。
订阅
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。