常量

1 定义

在 Go 语言中,术语”常量”用于表示固定的值。比如 5 、-89、 I love Go67.89 等等。

看看下面的代码:

var a int = 50  
var b string = "I love Go"

在上面的代码中,变量 a 和 b 分别被赋值为常量 50 和 I love GO。关键字 const 被用于定义常量,比如 50 和 I love Go。即使在上面的代码中我们没有明确的使用关键字 const,但是在 Go 的内部,它们是常量。

1.1 定义方式一:全定义const name type = initialvalue

package main

import "fmt"

func main() {
	const age int = 99
	fmt.Println(age)
}

顾名思义,常量不能再重新赋值为其他的值。因此下面的程序将不能正常工作,它将出现一个编译错误: cannot assign to age

package main

func main() {  
    const age int = 55  // 允许
    age = 89            // 不允许重新赋值
}

常量的值会在编译的时候确定。因为函数调用发生在运行时,所以不能将函数的返回值赋值给常量。

package main

import (  
    "fmt"
    "math"
)

func main() {  
    fmt.Println("Hello, playground")
    var a = math.Sqrt(4)   // 允许
    const b = math.Sqrt(4) // 不允许
}

在上面的程序中,因为 a 是变量,因此我们可以将函数 math.Sqrt(4) 的返回值赋值给它。

b 是一个常量,它的值需要在编译的时候就确定。函数 math.Sqrt(4) 只会在运行的时候计算,因此 const b = math.Sqrt(4) 将会抛出错误 error main.go:11: const initializer math.Sqrt(4) is not a constant)

1.2 定义方式二:类型推导const name = initialvalue

package main

import "fmt"

func main() {
    const age = 18
    fmt.Println(age)
}

1.3 其他定义方式

一次定义多个常量

package main

import "fmt"

func main() {
    const name, age = "zell", 18
    fmt.Println(name, age)
}
package main

import "fmt"

func main() {
    const (
        name string = "zell"
        age = 18
    )
    fmt.Println(name, age)
}

 数字自增常量

package main

import "fmt"

func main() {
    const (
        s1 = iota
        s2
        s3
        s4 = 99
        s5 = iota
    )
    fmt.Println(s1)
    fmt.Println(s2)
    fmt.Println(s3)
    fmt.Println(s4)
    fmt.Println(s5)
}

输出结果如下:

0
1 
2 
99
4 

 

posted @ 2022-11-12 21:28  不会钓鱼的猫  阅读(155)  评论(0编辑  收藏  举报