为了账号安全,请及时绑定邮箱和手机立即绑定

避免过多的转换

避免过多的转换

Go
冉冉说 2021-05-20 14:10:00
我当前的Go代码中有一些部分如下所示:i := int(math.Floor(float64(len(l)/4)))由于某些函数类型签名(例如中的)math.Floor,因此冗长似乎是必需的,但是可以简化吗?
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

通常,严格键入Go会导致一些冗长的表达式。详细并不是说口吃。类型转换可以做有用的事情,并且明确说明那些有用的事情很有价值。

简化的技巧是不要编写不需要的类型转换,为此,您需要参考文档,例如语言定义。

在您的特定情况下,您需要知道len()返回int,并且进一步,值> =0。您需要知道4是在此表达式中采用int类型的常量,并且您需要知道该整数除法将返回整数商,在这种情况下,它将是一个非负整数,实际上恰好是您想要的答案。

i := len(l)/4

这种情况很简单。


查看完整回答
反对 回复 2021-05-24
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我不确定100%Go如何处理整数除法和整数转换,但这通常是通过截断来实现的。因此,假设len(l)是一个int

i:=len(l)/4

否则,i:= int(len(l))/4还是i:=int(len(l)/4)应该起作用,理论上第一个要比第二个快一点。


查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信