请问docker源码中有段代码看不懂 求熟悉语法的人告知一下 不胜感激

小牛牛K 2017-01-08 01:07:31
func (cli *Cli) Command(name string) func(...string) error {
return map[string]func(...string) error{
"help": cli.CmdHelp,
}[name]
}


Cli的方法,方法名为Command,参数string类型的name。 返回值 func(...string) error函数

里面return看不懂了。

一个map key = string value = func(..string) error {} [] 函数 这个"help": cli.CmdHelp是什么,[name]是什么
是返回一个函数数组吗?以name下标的函数数组?
...全文
1001 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_37492651 2017-02-09
  • 打赏
  • 举报
回复
分开写你就明白: 返回类型 type aaa map[string]func(...string) error 实例化: var a = aaa{"help": cli.CmdHelp,} 返回值: return a[name] ------------- 也就是说, 你的参数必须是"help"字符串,才会返回一个函数cli.CmdHelp, 否则返回类型为`func(...string) error`的nil; 简写而已;
假正经的班长 2017-01-10
  • 打赏
  • 举报
回复
引用 3 楼 u013449715 的回复:
[quote=引用 2 楼 cjqpker 的回复:] return map[string]func(...string) error{ "help": cli.CmdHelp, }[name] 这个return语句干了这么几件事情 1、定义了一个map,key为string,value为如描述的函数,这个map初始化时定义了一个成员 “help”:xxx 2、取用这个map中的key为 [name] 的value,作为return的结果进行返回 至于为什么用这么奇怪的方式,我就不知道了。 另外,这里发的帖子,自己不要回复,保留回复量为0,获得回复的可能性高一些
你好 非常感觉。引用key为name的value,可是这个map里面是不是只有help这个key啊。。因为好像只初始化了一个help[/quote] 是的。只有调用 xx.Command("help") 时才返回一个函数cli.CmdHelp(),其他情况返回的都是空。
小牛牛K 2017-01-09
  • 打赏
  • 举报
回复
引用 2 楼 cjqpker 的回复:
return map[string]func(...string) error{ "help": cli.CmdHelp, }[name] 这个return语句干了这么几件事情 1、定义了一个map,key为string,value为如描述的函数,这个map初始化时定义了一个成员 “help”:xxx 2、取用这个map中的key为 [name] 的value,作为return的结果进行返回 至于为什么用这么奇怪的方式,我就不知道了。 另外,这里发的帖子,自己不要回复,保留回复量为0,获得回复的可能性高一些
你好 非常感觉。引用key为name的value,可是这个map里面是不是只有help这个key啊。。因为好像只初始化了一个help
假正经的班长 2017-01-09
  • 打赏
  • 举报
回复
return map[string]func(...string) error{ "help": cli.CmdHelp, }[name] 这个return语句干了这么几件事情 1、定义了一个map,key为string,value为如描述的函数,这个map初始化时定义了一个成员 “help”:xxx 2、取用这个map中的key为 [name] 的value,作为return的结果进行返回 至于为什么用这么奇怪的方式,我就不知道了。 另外,这里发的帖子,自己不要回复,保留回复量为0,获得回复的可能性高一些
小牛牛K 2017-01-08
  • 打赏
  • 举报
回复
求高手 高手 手

2,187

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧