续刷新低:一道关于 map 的题目,正确率只有 21%
2022-10-25 18:12:36 Author: mp.weixin.qq.com(查看原文) 阅读量:21 收藏

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

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

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

题图:无题

刊首语

上期是一道关于 map 的题目。以下代码输出什么?

package main

import "fmt"

func main() {
    var m map[string]int
    delete(m, "oh noes!")
    fmt.Println(m)
}

A:map[];B:nil;C:Panic;D:编译错误

正确答案是 A。正确率只有 21%,你答对了吗?

在 delete 函数的文档有说明:

The delete built-in function deletes the element with the specified key (m[key]) from the map. If m is nil or there is no such element, delete is a no-op.

因此 delete 啥也没做。

本期继续看一道关于 map 的题目。以下代码输出什么?

package main

import "fmt"

func main() {
 pairs := [][2]string{
  {"a""apple"},
  {"a""ant"},
  {"b""bee"},
 }

 m := map[string]string{
  pairs[0][0]: pairs[0][1],
  pairs[1][0]: pairs[1][1],
  pairs[2][0]: pairs[2][1],
 }
 fmt.Println(m["a"])
}

资讯

1、提议:增加清除 map 的方法[3]

rsc 建议这样 delete(m) 清除 map。

2、实验性支持 arena 包[4]

这是今年二月份的提案:https://github.com/golang/go/issues/51317,提供另一种分配内存的方法,可以减少内存管理开销。

3、Wails 2.1 发布[5]

构建跨平台的桌面应用。

4、buf 1.9 发布[6]

一种新的 Protobuf 处理库。

5、rqlite v7.8.0 发布[7]

基于 SQLite 分布式关系数据库。

6、easegress 2.2 发布[8]

全能型流量编排系统。国人开发。

文章

1、字节大规模微服务 Go 语言发展之路

本文整理自字节跳动高级工程师马春辉在 DIVE 全球基础软件创新大会 2022 的演讲分享,主题为“字节大规模微服务语言发展之路”。

2、Golang依赖注入提升开发效率!

依赖注入并不是java独有的,也不是web框架独有的,本文用通俗易懂的语言讲解什么是依赖注入,为什么需要依赖注入,以及go语言如何使用依赖注入来提升开发效率。

3、一文搞懂Go内联优化

在这一篇文章中,我就和大家一起来学习和理解一下Go编译器的内联优化。

4、Go 的 IO 流怎么并发?小技巧分享

今天聊一个存储的实现细节,数据副本的并发写入。

5、Fleet 特性预览[9]

JetBrains 下一代 IDE,本文针对 Go 开发者。

6、还咋优化?我是说Go程序[10]

arena 包使用示例。

7、Go 每日一库之 go-cache 缓存

go-cache 是一个轻量级的基于内存的 K-V 储存组件,内部实现了一个线程安全的 map[string]interface{},适用于单机应用。

开源项目

1、frankenphp[11]

一个现代的 PHP app server。

2、pp[12]

带颜色的漂亮打印包。

3、goatcounter[13]

简单的 Web 流量分析程序。

4、retry-go[14]

简单的重试机制包。

5、nbio[15]

纯 Go 的 1000k+ 连接解决方案。

资源&&工具

1、GoLab 2022 talk[16]

其中一篇 The Go WebAssembly ABI at a Low Level[17]

2、文档中找不到的Go 1.18和1.19版本的变化[18]

Go 101 各种抠细节。

3、油管视频[19]

使用 Go 编写更快、更安全的应用。

4、GopherCon 2022 技术大会 slides[20]

新鲜出炉。

订阅

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

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

wechat

参考资料

[1]

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

[2]

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

[3]

提议:增加清除 map 的方法: https://github.com/golang/go/issues/56351

[4]

实验性支持 arena 包: https://github.com/golang/go/commit/e0d01b8467b5cb9e68758932f50c3187374011ba

[5]

Wails 2.1 发布: https://wails.io/zh-Hans/

[6]

buf 1.9 发布: https://github.com/bufbuild/buf

[7]

rqlite v7.8.0 发布: https://github.com/rqlite/rqlite

[8]

easegress 2.2 发布: https://github.com/megaease/easegress

[9]

Fleet 特性预览: https://programmingpercy.tech/blog/previewing-the-ide-of-the-future

[10]

还咋优化?我是说Go程序: https://colobu.com/2022/10/17/a-first-look-at-arena/

[11]

frankenphp: https://github.com/dunglas/frankenphp

[12]

pp: https://github.com/k0kubun/pp

[13]

goatcounter: https://github.com/arp242/goatcounter

[14]

retry-go: https://github.com/avast/retry-go

[15]

nbio: https://github.com/lesismal/nbio

[16]

GoLab 2022 talk: https://golab.io/

[17]

The Go WebAssembly ABI at a Low Level: https://xeiaso.net/talks/wasm-abi

[18]

文档中找不到的Go 1.18和1.19版本的变化: https://go101.org/blog/2022-08-22-some-undocumented-changes-in-go-1.18-and-1.19.html

[19]

油管视频: https://www.youtube.com/watch?v=0ZxYL3M9Ytg&themeRefresh=1

[20]

GopherCon 2022 技术大会 slides: https://github.com/gophercon/2022-talks

[21]

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

[22]

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


文章来源: https://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247490397&idx=1&sn=e3895c139e476df3d75616503d4b8a8b&chksm=9be334bcac94bdaafb757ff7a85c31a076263409824f812f0c4eea3f0ca4587c00160d39a3c4#rd
如有侵权请联系:admin#unsafe.sh