这里记录每周值得分享的 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,但感觉这榜单。。。
整理近期的 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语言中文网"或者扫描二维码,即可订阅。