A Tour of Go Numeric Constants

Numeric constants are high-precision values.

An untyped constant takes the type needed by its context.

Try printing needInt(Big) too.

 

package main 

import "fmt"

const (
    Big = 1 << 100
    Small = Big >> 99
)

func needInt(x int) int {
    return x*10 + 1
}

func needFloat(x float64) float64{
    return x * 0.1
}

func main() {
    fmt.Println(needInt(Small))
    fmt.Println(needFloat(Small))
    fmt.Println(needFloat(Big))
}

 

 

 

 

 

package main 

import "fmt"

const (
    Big = 1 << 100
    Small = Big >> 99
)

func needInt(x int) int {
    return x*10 + 1
}

func needFloat(x float64) float64{
    return x * 0.1
}

func main() {
    fmt.Println(Small);
    var intVariable int = 1
    //var float32Variable float32 = 1.2
    fmt.Println(needInt(Small))
    // constant 1267650600228229401496703205376 overflows int
    //fmt.Println(needInt(Big))
    fmt.Println(needFloat(Small))
    fmt.Println(needFloat(Big))

    //go语言对类型的要求是很严格的,所以你不能传递int到float中或者float到int
    fmt.Println(needInt(intVariable))
    //cannot use float32Variable (type float32) as type int in argument to needInt
    //fmt.Println(needInt(float32Variable))
    //cannot use intVariable (type int) as type float64 in argument to needFloat
    //fmt.Println(needFloat(intVariable))
    //cannot use float32Variable (type float32) as type float64 in argument to needFloat
    //fmt.Println(needFloat(float32Variable))

}

不过常量却相对宽容一些

    //constant 1267650600228229401496703205376 overflows int
    fmt.Println(Big);

 

本文来自:博客园

感谢作者:ghgyj

查看原文:A Tour of Go Numeric Constants

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。