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

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
}

有更好的东西吗?


问题答案:

正如指出的那样(并希望毫不奇怪),使用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没有条件运算符。实现与上面相同的代码的最惯用的方法是什么?我得出了下面的解决方案,但似乎相当冗长 还有更好的吗?

  • 问题内容: 我有以下代码,该代码将字符串作为输入,并转换为UNIX时间戳。我想在golang中做同样的事情,但我无法识别将在Go中提供等效于DateTimeOffset结构的结构或函数。 例如: 输入:635804753769100000 输出:1444878577 UTC对应时间:10/15/2015 3:09:36 AM +00:00 有人可以帮我解决这个问题,以获得上述结果。 谢谢 问题答案

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

  • 问题内容: 在TSQL中,我可以声明: 在MySQL中,我无法编写相同的查询。 在MySQL中编写此查询的正确方法是什么? 问题答案: 行尾的分号。

  • 问题内容: 我有一个带有一些静态成员的类,并且我想运行一些代码来初始化它们(假设此代码无法转换成简单的表达式)。在Java中,我只会 除非我弄错了,否则C ++不允许使用此类静态代码块,对吗?我应该怎么做呢? 我想要以下两个选项的解决方案: 初始化在进程加载时发生(或在加载带有此类的DLL时)。 初始化发生在第一次实例化该类时。 对于第二种选择,我在想: 但这是不可能的,因为C ++(目前?)不允

  • 问题内容: 我想保持我的依赖关系为最新。使用Node.js,我运行(及更高版本)。 Go mod最接近的是什么? 理想情况下,我会看到有关项目的过时依赖关系的报告(并非全部都是递归的)。谢谢 问题答案: 列出直接和间接依赖 Go 1.11模块:如何升级和降级依赖项 Wiki中对此进行了详细说明: 要查看所有直接和间接依赖项的可用次要和补丁升级,请运行。 要将当前模块的所有直接和间接依赖关系升级到最