Frequently Asked Questions:声明后置,++为什么后置

305 阅读2分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

为什么声明是后置的?

如果您习惯了 C语言,那么确实给你的观感是声明后置了。在 C 中,设计理念是将变量声明认为是表示其类型的一个表达式,这是一个好主意,但类型和表达式语法混合在一起,结果可能令人困惑;例如函数指针。 Go 主要将表达式和类型语法分开,并简化了事情(使用前缀 * 作为指针是证明规则的例外)。在 C 中,下面的声明将 a 声明为指针,但是 b不是

int* a, b;

在Go中声明两者都是指针,这更清晰,更规律。

var a, b *int

此外, := 短声明形式认为完整的变量声明应该与 := 呈现相同的顺序,所以下面两个具有相同的效果

var uint64 = 1
a := uint64(1)

通过对类型使用不同的语法而不仅仅是表达式语法,编译器的解析也得到了简化;诸如 funcchan 之类的关键字使用就会变得清晰。

有关更多详细信息,请参阅有关 Go 的声明语法的文章。

为什么是++和--是语句而不是表达式为什么是后缀而不是前缀?

没有指针算术,前缀和后缀增量运算符的便利价值就会下降。 通过将它们从表达式层次结构中完全删除,表达式语法得到了简化,并且围绕 ++ 和 --(考虑 f(i++)p[i] = q[++i])这类求值顺序的混乱问题也被消除了 . 简化意义重大。 至于后缀与前缀,两者都可以正常工作,但后缀版本更传统; 对前缀的坚持源于 STL,STL 是一种语言库,具有讽刺意味的是,它的名称包含一个后缀增量。

\