
It can be unexpected that printing a float32 involves 64-bit floating point routines, see for example: https://github.com/tinygo-org/tinygo/issues/1415 This commit adds a dedicated printfloat32 instead just for printing float32 values. It comes with a possible code size increase, but only if both float32 and float64 values are printed. Therefore, this should be an improvement in almost all cases. I also tried using printfloat32 for everything (and casting a float64 to float32 to print) but the printed values are slightly different, breaking the testdata/math.go test for example.
48 строки
880 Б
Go
48 строки
880 Б
Go
package main
|
|
|
|
func main() {
|
|
// test basic printing
|
|
println("hello world!")
|
|
println(42)
|
|
println(100000000)
|
|
|
|
// check that this one doesn't print an extra space between args
|
|
print("a", "b", "c")
|
|
println()
|
|
// ..but this one does
|
|
println("a", "b", "c")
|
|
|
|
// print integers
|
|
println(uint8(123))
|
|
println(int8(123))
|
|
println(int8(-123))
|
|
println(uint16(12345))
|
|
println(int16(12345))
|
|
println(int16(-12345))
|
|
println(uint32(12345678))
|
|
println(int32(12345678))
|
|
println(int32(-12345678))
|
|
println(uint64(123456789012))
|
|
println(int64(123456789012))
|
|
println(int64(-123456789012))
|
|
|
|
// print float64
|
|
println(3.14)
|
|
|
|
// print float32
|
|
println(float32(3.14))
|
|
|
|
// print complex128
|
|
println(5 + 1.2345i)
|
|
|
|
// print interface
|
|
println(interface{}(nil))
|
|
|
|
// print map
|
|
println(map[string]int{"three": 3, "five": 5})
|
|
|
|
// TODO: print pointer
|
|
|
|
// print bool
|
|
println(true, false)
|
|
}
|