【发布时间】:2017-08-18 11:54:18
【问题描述】:
我目前正在学习 GoLang,我来自 Python 背景。
最近,我偶然发现了 %(modulo) 运算符的一种行为,它与 Python 中的相应运算符不同。与modular operation和余数的定义完全相反,负整数与正整数的模返回负值。
例子:
Python
a, b, n = -5, 5, 3
for i in range(a, b):
print(i%n)
输出:
1
2
0
1
2
0
1
2
0
1
去
a, b, n := -5, 5, 3
for i:=a; i<b; i++ {
fmt.Println(i%n)
}
输出:
-2
-1
0
-2
-1
0
1
2
0
1
在阅读了Modulo operator 和少数类似的questions 后询问了这些差异背后的原因,我了解到这些是由于相关语言的设计目标造成的。
第一季度。我想知道为什么 Go 在这里遵循 C/C++ 的协议而不是 Python。任何相关讨论的链接都会有所帮助。
第二季度。 Go 中是否有一个内置功能可以复制 Python 的模运算?
替代:是否有计算“模数”而不是“余数”的内部方法?
【问题讨论】: