Go语言爱好者周刊:第 157 期 — 正式发布了
2022-8-29 19:16:37 Author: mp.weixin.qq.com(查看原文) 阅读量:10 收藏

这里记录每周值得分享的 Go 语言相关内容,周日发布。本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2]

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

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

题图:《100 Go Mistakes and How to Avoid Them》 正式发布

刊首语

本期的题目是关于类型断言的。以下代码输出什么?

const X = 7.0
var x interface{} = X

if y, ok := x.(int); ok {
  fmt.Println(y)
else {
  fmt.Println(int(y))
}

上期题目正确率不到 50%,只有 44%,一起看看。以下代码输出什么?

package main

import (
 "fmt"
 "net/url"
)

// 其中 url.Values 的定义:type Values map[string][]string
type Query struct {
 url.Values
}

func main() {
 q := Query{}
 q.Values["name"] = []string{"polarisxu"}
 fmt.Println(q.Get("name"))
}

A:panic;B:编译错误;C:polarisxu

Url.Values 是 map,没有进行初始化,可以在 q := Query{} 之后加上这么一句看输出结果:

// 输出:url.Values(nil)
fmt.Printf("%#v\n", q.Values)

nil 的 map 自然不能设置值,所以 panic。

资讯

1、excelize 2.6.1 发布[3]

Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。

2、go-vcr 3.1 发布[4]

记录并重放 HTTP 交互以获得快速,确定性和准确的测试。

3、bloom 3.3 发布[5]

Go 的 Bloom filters 实现。

4、ElasticSearch Go 8.4 发布[6]

ElasticSearch Go 8.4 官方客户端发布。

5、clickhouse-go 2.3 发布[7]

clickhouse 官方 go 客户端 API  库。

6、Go 性能优化[8]

strconv.ParseXXX 系列函数性能将提升 15% 以上。

7、Kubernetes 1.25 发布[9]

Ephemeral Containers 进入 stable。

文章

1、Go语言从0到1实现最简单的数据库!

后台开发对于数据库操作是必不可少的事情,了解数据库原理对于平常的工作的内功积累还是很有帮助的,这里实现一个最简单的数据库加深自己对数据库的理解。

2、Go:负载均衡原理分析与源码解读

我们一起学习下和 Resolver 关系密切的 Balancer 的相关内容。这里说的负载均衡主要指数据中心内的负载均衡,即 RPC 间的负载均衡。

贝壳Go实现的多云对接存储网关建设

贝壳存储服务通过S3协议向业务方提供文件、图片、音视频的存储及下载。

4、Rust 与 Go 可以互操作?

Go 和 Rust 是近几年比较受关注的新编程语言,两者没有直接的竞争关系,更多是互补。如果你想使用两者的优势并喜欢互操作,本文也许对你有帮助!

5、看Go中的struct如何被优化,还有小插曲

想必大家在coding的时候,很少对struct中的字段的字节对齐关注,今天带大家来看一下字节对齐在我们项目编码中的一些影响。

6、万字长文告诉你 Go 1.19 中值得关注的几个变化[10]

新版 Go 内存模型文档与 Go 运行时引入 Soft memory limit。

开源项目

1、buffalo[11]

快速的 Go Web 开发框架,1.0 版本发布。

2、go-chassis[12]

Go-Chassis 是一个go语言的微服务开发框架,专注于帮你实现云原生应用。Logo的含义是开发者可以通过引入go chassis重新创造和定制自己的“轮子”(即开发框架),以此来加速云原生应用的交付速度。

3、go-sstables[13]

protobuf 兼容的 sstables 的 Go 库

资源&&工具

1、seenvoy[14]

可视化 Envoy 的配置。

2、go_test_workshop[15]

Go Test 从入门到躺平。

3、example[16]

一个简单的示例演示了如何快速运行 GoAdmin。

4、《100 Go Mistakes》正式出版[17]

剧透下,中文版不会太远。

订阅

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

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

wechat

参考资料

[1]

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

[2]

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

[3]

excelize 2.6.1 发布: https://github.com/qax-os/excelize

[4]

go-vcr 3.1 发布: https://github.com/dnaeon/go-vcr

[5]

bloom 3.3 发布: https://github.com/bits-and-blooms/bloom

[6]

ElasticSearch Go 8.4 发布: https://github.com/elastic/go-elasticsearch

[7]

clickhouse-go 2.3 发布: https://github.com/ClickHouse/clickhouse-go

[8]

Go 性能优化: https://github.com/golang/go/commit/cf26fbb1f6d9644f447342f42d2dddcbe9ceda61

[9]

Kubernetes 1.25 发布: https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/

[10]

万字长文告诉你 Go 1.19 中值得关注的几个变化: https://tonybai.com/2022/08/22/some-changes-in-go-1-19

[11]

buffalo: https://github.com/gobuffalo/buffalo

[12]

go-chassis: https://github.com/go-chassis/go-chassis

[13]

go-sstables: https://github.com/thomasjungblut/go-sstables

[14]

seenvoy: https://github.com/saltbo/seenvoy

[15]

go_test_workshop: https://github.com/smallnest/go_test_workshop

[16]

example: https://github.com/GoAdminGroup/example

[17]

《100 Go Mistakes》正式出版: https://www.manning.com/books/100-go-mistakes-and-how-to-avoid-them

[18]

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

[19]

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


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247490300&idx=1&sn=7fd05a6b83263e2c8e43e95eaf7454cc&chksm=9be3351dac94bc0b550af7c61762a47954935e43af0bb5f046b4d08bc974f40b28d2dc61b339#rd
如有侵权请联系:admin#unsafe.sh