im将python中的某些代码转换为
在这里我想用go lang编写相等的代码:
python:
while g_day_no >= g_days_in_month[i] + (i == 1 and leap):
g_day_no -= g_days_in_month[i] + (i == 1 and leap)
i+=1
我的尝试:
leap := int32(1)
var i = int32(0)
for g_day_no >= (g_days_in_month[i] + (i == 1 && leap)){
g_day_no -= g_days_in_month[i] + (i == 1 && leap)
i+=1
}
但是我在想法上有错误:
无效操作:i == 1 &&飞跃(类型不匹配的bool和int32)
本节(i == 1 && leap)
我该如何更正代码的这一部分?
答案 0 :(得分:1)
Go对条件更加严格。它需要布尔值。 leap
是整数,因此只需检查一下值即可:
g_day_no >= (g_days_in_month[i] || (i == 1 && leap!=0))
更详细的答案
Python中的布尔值(True
和False
)对应于以下整数值:
True=>1
False=>0
这可以通过以下内容看到:
>>> True+0
1
>>> False+0
0
因此,当您将两个布尔值加在一起时,它与OR
相同:
True + True => 2 (True)
False + True => 1 (True)
True + False => 1 (True)
False + False => 0 (False)
这是与OR相同的“真值表”:
真或真=>真 假或真=>真 正确或错误=>正确 FALSE OR FALSE =>错误
因此,将您的+
更改为||
({Go中的||
是OR
)。