我一直在使用由go-dockerclient]
创建的精彩fsouza,但我很困惑为什么docker.CreateContainerOptions.Volumes
是字符串到结构的地图?
The docs don't explain为什么会这样,但我想你只需要map [string] =>字符串将主机卷映射到容器卷?或者将值保留为空,表示主机卷将安装在容器内的同一路径上。
我通过人们创建容器来查看一堆of open code on Github,但我刚看到很多人安装Volumes时只有一个字符串和一个空结构作为值。
我也是Go的新手,所以我可能会遗漏一些完全明显的东西。
答案 0 :(得分:6)
空结构是go中唯一占用0(零)内存字节的类型。
当您想要存储某事或发信号某事时,使用空结构是一种常见的习惯用法。但某事应该尽可能小。
在你的情况下
map[string]struct{}
用于存储没有关联值的地图键。 这样,您可以快速检查地图是否包含密钥。 (它基本上是一套)。
Here是一些关于空结构可以做什么的例子。
答案 1 :(得分:2)
我不确切知道这个包是如何工作的,但是map[string]struct{}
是Golang惯用的表示集合的方式。所以我的猜测是地图的关键字必须包含卷的完整路径......