当前位置: 首页 > 知识库问答 >
问题:

C的三元运算符的惯用Go等价物是什么?

东郭臻
2023-03-14

在C/C++(以及该家族的许多语言)中,根据条件声明和初始化变量的一个常见习惯用法是使用三元条件运算符:

int index = val > 0 ? val : -val

Go没有条件运算符。实现与上面相同的代码的最惯用的方法是什么?我得出了下面的解决方案,但似乎相当冗长

var index int

if val > 0 {
    index = val
} else {
    index = -val
}

还有更好的吗?

共有1个答案

钦耀
2023-03-14

正如所指出的(希望并不奇怪),使用if+else确实是在Go中使用条件句的惯用方法。

不过,除了完整的var+if+else代码块之外,还经常使用以下拼写:

index := val
if val <= 0 {
    index = -val
}

如果您有一个足够重复的代码块,例如int value=a<=b的等价物?a:B,您可以创建一个函数来保存它:

func min(a, b int) int {
    if a <= b {
        return a
    }
    return b
}

...

value := min(a, b)

编译器将内联这些简单的函数,因此它更快,更清晰,更短。

 类似资料:
  • 问题内容: 在C / C ++(以及该家族的许多语言)中,根据条件声明和初始化变量的常用习语使用三元条件运算符: Go没有条件运算符。实现与上述相同代码的最惯用方式是什么?我来到以下解决方案,但似乎很冗长 有更好的东西吗? 问题答案: 正如指出的那样(并希望毫不奇怪),使用确实是Go 语言中进行条件处理的惯用方式。 但是,除了完整的代码块之外,还经常使用以下拼写: 并且如果您有足够重复的代码块(例

  • 本文向大家介绍c#中的三元运算符是?相关面试题,主要包含被问及c#中的三元运算符是?时的应答技巧和注意事项,需要的朋友参考一下 三元运算符,有的也称三目运算符,是对if else  双分支条件语句的简化 格式如下: 表达式一?表达式二:表达式三        释义:如果表达式一为真,就执行问号后边紧跟着的表达式,也就是表达式二;             否则执行冒号后边的表达式,即表达式三。 等价

  • 是否有任何Golang等效的Java的? 将源阵列从特定的起始位置复制到目标阵列。要复制的参数数量由参数决定。位于到的组件将从复制到目标阵列中。

  • 问题内容: Java的运算符等效于什么(在C#中)? (为澄清起见,我不是指and 运算符。) 问题答案: 在C#中,可以使用无符号整数类型,然后使用和执行您期望的操作。有关移位运算符的MSDN文档为您提供了详细信息。 由于Java不支持无符号整数(除之外),因此需要此附加运算符。

  • 我仍然在学习和试验JavaFX中的GUIs,我似乎无法得到我所希望的“外观”…我试图在一个面板中分组几个标签,然后在另一个面板中添加另一个标签。但我似乎不知道如何在JavaFX中正确使用“JPanels”? 如有任何帮助,将不胜感激 编辑:这是我试图通过尝试不同的布局来实现的,但运气仍然不好

  • 在Mac和Windows上,可以使用 <罢工> (替换 )和 (替换 ) (Docker 18.03+)位于容器内。 对于Linux来说,有没有一个可以在不传递env变量或使用各种CLI命令提取它的情况下开箱即用的方法?