go - 为什么 Go 没有三元条件运算符
问题描述
我对 Go 比较陌生,为了快速赶上,我尝试在 Go 中重写我的一些 JavaScript(NodeJS) 代码。最近我遇到了一个绊脚石,我发现 Go 没有三元运算符。例如在 JavaScript 中我可以这样做:
const pageNumber: number = query.pageNumber ? parseInt(query.pageNumber, 10): 1;
这里的query代表Req.query
但是我发现我不能用 Go 做同样的事情,我必须写一个 if-else 语句。我只是想知道为什么这在 Go 世界中不存在的原因是什么(如果有一些设计原则来说明为什么会这样)
解决方案
Go 中没有三元测试操作。您可以使用以下方法来实现相同的结果:
if expr { n = trueVal } else { n = falseVal }
Go 没有出现的原因
?:
是该语言的设计者已经看到该操作过于频繁地用于创建难以理解的复杂表达式。表格虽然更长,if-else
但无疑更清晰。一种语言只需要一个条件控制流结构。
请参阅相关:什么是 C 的三元运算符的惯用 Go 等价物?
推荐阅读
- r - 如何为包装 ggplot() 的自定义函数编写可选参数?
- r - 如何更好地编写用于在 R 中提取栅格数据的代码。也许是一个循环?
- javascript - 部分/div之间的空行
- c# - 数据访问类设计:使类可测试,同时还包含依赖项
- python - Linux:来自图像命令工作的 FFMPEG 延时视频仅在目录中的 1000 个图像中收集几个图像 提前终止
- java - 如何使用更新和删除按钮更新和删除 JTable 和文本文件中的数据?
- insert - 使用 Sublime Text 在覆盖/插入模式下粘贴
- php - 使用 fit_transform 和 transform 缩放训练集和测试集(StandardScaler、Binarizer)的数据集
- java - 'parallelStream' 函数的性能是否因原子变量而降低?
- typescript - 打字稿中的 is 语句有什么作用?