我在玩 Go,想知道在 Go 中执行惯用类型转换的最佳方法是什么。基本上我的问题在于uint8
,uint64
和float64
. 根据我对其他语言的经验,auint8
与 a的乘法uint64
将产生一个uint64
值,但在 go 中并非如此。
这是我构建的一个示例,我问这是否是编写此代码的惯用方式,或者我是否缺少重要的语言结构。
package main
import ("math";"fmt")
const(Width=64)
func main() {
var index uint32
var bits uint8
index = 100
bits = 3
var c uint64
// This is the line of interest vvvv
c = uint64(math.Ceil(float64(index * uint32(bits))/float64(Width)))
fmt.Println("Test: %v\n", c)
}
从我的角度来看,由于所有显式类型转换,上限值的计算似乎不必要的复杂。
谢谢!