猿问

你如何在 go 中将命令链接到多行?

我想以这种方式链接命令:


var cmdGroups = []*commands.CmdGroup {

    commands.MakeCmdGroup("foo", cmd1, cmd2, cmd3).AddConstraint(cmd1, cmd2).AddConstraint(cmd2, cmd1, cmd3),

    commands.MakeCmdGroup("bar", cmd1, cmd4).AddConstraint(cmd1, cmd4),

}

出于 80 列长度的原因,我想将我的链分成几行,但是 Go 不允许我编译这个:


var cmdGroups = []*commands.CmdGroup {

    commands.MakeCmdGroup("foo", cmd1, cmd2, cmd3)

            .AddConstraint(cmd1, cmd2)

            .AddConstraint(cmd2, cmd1, cmd3),

    commands.MakeCmdGroup("bar", cmd1, cmd4)

            .AddConstraint(cmd1, cmd4),

}

我能做什么 ?


月关宝盒
浏览 226回答 2
2回答

手掌心

我可能会写一些变体:var cmdGroups = []*commands.CmdGroup{                commands.MakeCmdGroup(                        "foo", cmd1, cmd2, cmd3,                ).AddConstraint(                        cmd1, cmd2,                ).AddConstraint(                        cmd2, cmd1, cmd3,                ),                commands.MakeCmdGroup(                        "bar", cmd1, cmd4,                ).AddConstraint(cmd1, cmd4),}但是,在惯用代码中不会经常看到如此长的选择器运算符链。(我认为标准库是惯用代码的非正式指南)。也许此代码设计/结构可能存在一些弱点。
随时随地看视频慕课网APP

相关分类

Go
我要回答