我当前的Go代码中有一些部分如下所示:
i := int(math.Floor(float64(len(l)/4)))
详细程度似乎是必要的,因为某些函数类型签名就像math.Floor
中的一样,但它可以简化吗?
答案 0 :(得分:13)
一般来说,Go的严格输入会导致一些冗长的表达。但是,详细并不意味着口吃。类型转换可以做有用的事情,明确说明这些有用的东西是很有价值的。
简化的技巧是不编写不需要的类型转换,为此您需要参考语言定义等文档。
在您的特定情况下,您需要知道len()返回int,并且值>> = 0.您需要知道4是一个常量,它将采用此表达式中的int类型,并且你需要知道整数除法将返回整数商,在这种情况下,它将是一个非负的int,实际上恰好是你想要的答案。
i := len(l)/4
这个案子很简单。
答案 1 :(得分:2)
我不是100%确定Go如何处理整数除法和整数转换,但它通常是通过截断来实现的。因此,假设len(l)是int
i:=len(l)/4
否则i:= int(len(l))/4
或i:=int(len(l)/4)
应该有效,第一个在理论上略快于第二个。