go的十万个为什么?-性能和控制流|Go主题月
本文中译于官方FAQ
原文地址:golang.org/doc/faq#Con…
golang.org/doc/faq#Per…
Go 项目控制流
为什么Go 没有三元运算符?
Go中没github敞开私库有三元查验操作。您能够运用以下办法取得相同的效果:
if expr {
n = trueVal
} else {
n = falseVal
}
Go短少?:
的原因是该言语的规划人员发现该操作过于频繁地用于创建难以了解的杂乱表达式。if-else
方法虽然更长,github中文官网网页但无疑更明晰。一种言语仅需求一个条件控制流构造。
Go 项目功用
为什么Go在基准X上体现不佳?
Go的规划方针之一是使 C 的功用抵达可比程序的水平,但在某些基准查验中却体现不佳,包括golang.org/x/exp/shoot…中的一些基准查验。最慢的依托库在 Go 中不提供可比功用的版别。例如,pidigits.go依托于一个多精度数学包,而与 Go 言语不同,C 版别运用GMP(由优化的宫颈癌汇编器编写)。依托于正则狗狗币表达式的基准(例如,regex-dna.go)实际上是将 GGoo 的本地正则表达式龚俊包与老练的,高度优化的正则表达式库(如PCRE)进行比较。
基准查验是通过广泛的调整赢得的,大多数基准的 Go 版别需求引起留神。如果您丈量相似的 C 和 Go 程序(reverse-complement.go是一个示例),您会发现这两种言语的原始功用比该套件所表明的要紧Go密得多。
虽然如此,仍有改进的空间。编译器不错,但可能会更好,许多库需求许多的功用工作,而且废物收集器还不够快。(即使是github敞开私库这样,留神不要发生不必要的废giti物,因为这也会发生巨大的影响。)
无论如何,Go 往往具有github永久回家地址很高的竞争力。随狗狗币着言语和东西的发展,许多程序的功用有了显着行进。有关信息示例,请参阅有关对 Go 程序进行概要剖析的博客文章。