为什么CreateContainerOptions的卷采用map [string] struct {}?

时间:2016-02-11 18:49:06

标签: go docker

我一直在使用由go-dockerclient]创建的精彩fsouza,但我很困惑为什么docker.CreateContainerOptions.Volumes是字符串到结构的地图?

The docs don't explain为什么会这样,但我想你只需要map [string] =>字符串将主机卷映射到容器卷?或者将值保留为空,表示主机卷将安装在容器内的同一路径上。

我通过人们创建容器来查看一堆of open code on Github,但我刚看到很多人安装Volumes时只有一个字符串和一个空结构作为值。

我也是Go的新手,所以我可能会遗漏一些完全明显的东西。

2 个答案:

答案 0 :(得分:6)

空结构是go中唯一占用0(零)内存字节的类型。

当您想要存储某事或发信号某事时,使用空结构是一种常见的习惯用法。但某事应该尽可能小。

在你的情况下

map[string]struct{}

用于存储没有关联值的地图键。 这样,您可以快速检查地图是否包含密钥。 (它基本上是一套)。

Here是一些关于空结构可以做什么的例子。

答案 1 :(得分:2)

我不确切知道这个包是如何工作的,但是map[string]struct{}是Golang惯用的表示集合的方式。所以我的猜测是地图的关键字必须包含卷的完整路径......