go语言 – 数值常量

数值常量包括整数、浮点数和复数常量。数值常量有一些微妙之处。

让我们看一些例子,让事情更清楚。

package main

import (  
    "fmt"
)

func main() {  
    const a = 5
    var intVar int = a
    var int32Var int32 = a
    var float64Var float64 = a
    var complex64Var complex64 = a
    fmt.Println("intVar",intVar, "\nint32Var", int32Var, "\nfloat64Var", float64Var, "\ncomplex64Var",complex64Var)
}

在上面的程序中,const a是无类型的,值为5

你可能想知道a的默认类型是什么?我们如何将它赋值给不同类型的变量?答案就在a的语法中。下面的程序将使事情更清楚。

package main

import (  
    "fmt"
)

func main() {  
    var i = 5
    var f = 5.6
    var c = 5 + 6i
    fmt.Printf("i's type %T, f's type %T, c's type %T", i, f, c)

}

在上面的程序中,每个变量的类型由数值常量的语法决定。5在语法上是整数,5.6是浮点数,5 + 6i在语法上是复数。当上面的程序运行时,它打印i的类型int, f的类型float64, c的类型complex128

现在来看看下面的程序是如何工作的。

package main

import (  
    "fmt"
)

func main() {  
    const a = 5
    var intVar int = a
    var int32Var int32 = a
    var float64Var float64 = a
    var complex64Var complex64 = a
    fmt.Println("intVar",intVar, "\nint32Var", int32Var, "\nfloat64Var", float64Var, "\ncomplex64Var",complex64Var)
}

在这个程序中,a的值是5, a的语法是泛型的(它可以表示浮点数、整数甚至是没有虚部的复数),因此可以赋值给任何兼容的类型。这类常量的默认类型,可以认为是根据上下文动态生成的。

var intVar int = a需要a是整型的,所以它变成了一个整型常量。var complex64Var complex64 = a要求a是一个复数,因此它变成了一个复数常数。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载