go - Python 在 golang 中的 setdefault 模拟

标签 go

在 python 中有一个方便的字典快捷方式 - setdefault 方法。例如,如果我有表示从字符串到列表的映射的字典,我可以这样写

if key not in map:
    map[key] = []
map[key].append(value)

这太冗长了,更像 pythonic 的方式是这样的:

map.setdefault(key, []).append(value)

顺便说一句,有一个 defaultdict 类。

所以我的问题是 - Go 中的 map 是否有类似的东西?我真的很讨厌使用 map[string][]int 和类似的类型。

最佳答案

没有专门针对 map 的东西,但是 nil 是一个有效的空 slice (可以与 append 内置函数一起使用)所以下面的代码:

x := make(map[string][]int)
key := "foo"
x[key] = append(x[key], 1)

无论 key 是否存在于 map 中,都会起作用。

关于go - Python 在 golang 中的 setdefault 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188271/

相关文章:

go:需要更新 go.mod;更新它:

http - 从简单的 HTTP 服务器中的每个文件中删除 .html 扩展名

go - golang中的 bool 值没有异或运算符吗?

go - 如何在 Golang 中使用 JWT 获得响应

Go 模板在行之间交替设计

multithreading - Goroutine I/O 调度

unit-testing - Go 中的模拟随机生成器

go - 为sns传输添加服务名称

arrays - 我正在尝试对来自流的字节进行突变,因为进行解码,但是它不起作用

database - 如何发起 HTTP 请求从 ClickHouse 数据库中获取数据