私は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)
}
私の観点からは、すべての明示的な型変換のために、上限値の計算は不必要に複雑に思えます。
ありがとう!