私はGoで遊んでいて、Goで慣用的な型変換を実行するのが最善の方法だと思っていました。基本的に、私の問題は、、、、およびの間の自動型変換uint8にuint64ありfloat64ます。他の言語での私の経験から、auint8とaを掛けると値uint64が得られuint64ますが、実際にはそうではありません。
これが私が作成した例であり、これがこのコードを書く慣用的な方法なのか、それとも重要な言語構成が欠落しているのかを尋ねます。
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)
}
私の観点からは、すべての明示的な型変換のために、上限値の計算は不必要に複雑に思えます。
ありがとう!