当前位置: 首页 > 面试题库 >

您如何在多行代码中链接命令?

万博涛
2023-03-14
问题内容

我想这样链接命令:

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),
}

我能做什么 ?


问题答案:

正如FUZxxl指出的那样,您的问题是分号的自动插入。规格说明:

当输入被分解为令牌时,如果该行的最终令牌为,则将分号自动插入到非空白行的末尾的令牌流中。

  • 标识符
  • 整数,浮点数,虚数,符文或字符串文字
  • 关键字之一break,continue,fallthrough或return
  • 运算符和定界符++,-,),]或}之一

您有一个函数调用,该函数的计数很重要,)因此在行的末尾添加了分号。

要避免自动分号转换,您可以通过以下方式之一来编写呼叫:

使用.代替分号:

x.
Method(p1,p2,p3)

在参数列表的开头而不是函数之前中断:

x.Method(
   p1,p2,p3, // , at the end is important to prevent semicolon insertion
)

如果您不喜欢上述方法,则可以(从go1.1开始)将这些方法视为一等公民,并临时创建可能更短的快捷方式:

f = x.Method
f(p1,p2,p3).f(p3,p4,p5)

对于这个例子,我还没有足够的思考。f(...).f(...)当然不可能,因为f没有成员的返回值f。一个将不得不重新分配f。因此,您从中一无所获。



 类似资料:
  • 问题内容: 在1.6版的android android.jar中访问联系人具有People.CONTENT_URI来调用与联系人相关的信息,而在更高版本中,我们需要对RawContacts.CONTENT_URI具有api支持。 例如,访问日历也是如此,因为在Android 2.2中更改了其URI。 是否有最佳实践来管理所有不同的更改,而无需添加其他应用程序或为每个版本的更改单独构建? 问题答案:

  • 问题内容: 我想直接在命令行执行单个php语句,而不必使用单独的php文件。 这怎么可能 ? 问题答案: 如果您要在命令行中使用PHP,建议您安装 phpsh,这是一个不错的PHP shell。这很有趣。 无论如何,php命令提供了 两个开关来从命令行执行代码 : 您可以这样使用php的 -r开关 : 上面的PHP命令应该 输出 并 返回, 如您所见: 另一个有趣的开关是 php -a : 与 p

  • 我遵循以下指示https://code.visualstudio.com/docs/setup/mac但我没有成功。这就是我进去时发生的事情 我得到了以下信息: 我还查找了以下问题:如何在OSX上从命令行打开Visual Studio代码?,这没用。 我在VSCode中只有一个终端选项,zsh。

  • 问题内容: 我想评估 作为一个块,而不是逐行评估 有没有简单的方法可以将提示移至下一行? 问题答案: 节点v6.4具有一种模式。在repl提示符下,您可以输入多行。 例 以下是所有特殊repl命令的文档 https://nodejs.org/api/repl.html#repl_commands_and_special_keys

  • 问题内容: 我有以下代码行可运行批处理文件, 但是我希望它在后台运行,而不是向用户显示命令行。我该如何更改才能做到这一点? 问题在于命令窗口打开并中断程序GUI。我只希望命令窗口在执行批处理文件时不可见。 问题答案: 完全删除“开始”将完成您想要的操作(因为这就是创建窗口的原因): 我已经对此进行了测试,并且可以正常工作,当然,如果您想与命令提示符进行通信,则必须具有输入和输出流,也不要忘记您的错

  • 问题内容: def exec_command(self, command, bufsize=-1): #print “Executing Command: “+command chan = self._transport.open_session() chan.exec_command(command) stdin = chan.makefile(‘wb’, bufsize) stdout = c