避免太多转换

Ser*_*lla 9 go

我当前的Go代码中有一些部分看起来像这样:

i := int(math.Floor(float64(len(l)/4)))
Run Code Online (Sandbox Code Playgroud)

冗长似乎是必要的,因为一些函数类型签名,如一个math.Floor,但它可以简化?

Son*_*nia 13

一般来说,Go的严格输入会导致一些冗长的表达.但是,详细并不意味着口吃.类型转换可以做有用的事情,明确说明这些有用的东西是很有价值的.

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

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

i := len(l)/4
Run Code Online (Sandbox Code Playgroud)

这个案子很简单.