Я новичок в Go и в настоящее время слежу за A Tour of Go.
Я сейчас на странице Нумерация c Константы . Ниже приведена сокращенная версия кода, который выполняется на этой странице:
package main
import "fmt"
const Big = 1 << 100
func needFloat(x float64) float64 {
return x * 0.1
}
func main() {
fmt.Println(needFloat(Big))
// fmt.Printf("Type of Big %T", Big)
}
этот код успешно компилируется с выводом 1.2676506002282295e+29
Следующий код, однако, не будет компилироваться и давать ошибка:
package main
import "fmt"
const Big = 1 << 100
func needFloat(x float64) float64 {
return x * 0.1
}
func main() {
fmt.Println(needFloat(Big))
fmt.Printf("Type of Big %T", Big)
}
Вывод: ./prog.go:9:13: constant 1267650600228229401496703205376 overflows int
Почему вы думаете, что это произошло? Я надеюсь, что вы любезно объясните.