Go 语言学习:了解 const 关键字及常量声明


在 Go 语言中,const 关键字用于声明常量。常量在程序运行时不会改变,可以用于定义不变的值,如数学常数、固定的配置信息等。常量的类型可以是布尔型、数字型(整数型、浮点型和复数型)和字符串型。

1. 常量的声明

常量的声明使用 const 关键字,语法如下:

const name = value

示例

package main

import "fmt"

func main() {
    const pi = 3.14159
    const name = "Go Language"

    fmt.Println("Pi:", pi)
    fmt.Println("Language:", name)
}

2. 显式类型和隐式类型

常量可以显式地指定类型,也可以隐式地根据值推断类型。

显式类型

package main

import "fmt"

func main() {
    const pi float64 = 3.14159
    const truth bool = true
    const greeting string = "Hello, Go!"

    fmt.Println("Pi:", pi)
    fmt.Println("Truth:", truth)
    fmt.Println("Greeting:", greeting)
}

隐式类型

package main

import "fmt"

func main() {
    const pi = 3.14159
    const truth = true
    const greeting = "Hello, Go!"

    fmt.Println("Pi:", pi)
    fmt.Println("Truth:", truth)
    fmt.Println("Greeting:", greeting)
}

3. 多个常量的声明

可以在一个 const 语句中声明多个常量。

package main

import "fmt"

func main() {
    const (
        pi      = 3.14159
        e       = 2.71828
        greeting = "Hello, Go!"
    )

    fmt.Println("Pi:", pi)
    fmt.Println("E:", e)
    fmt.Println("Greeting:", greeting)
}

4. 常量的枚举

使用 iota 标识符可以生成一系列相关的常量,常用于枚举类型。

示例

package main

import "fmt"

func main() {
    const (
        Sunday = iota // 0
        Monday        // 1
        Tuesday       // 2
        Wednesday     // 3
        Thursday      // 4
        Friday        // 5
        Saturday      // 6
    )

    fmt.Println("Sunday:", Sunday)
    fmt.Println("Monday:", Monday)
    fmt.Println("Tuesday:", Tuesday)
    fmt.Println("Wednesday:", Wednesday)
    fmt.Println("Thursday:", Thursday)
    fmt.Println("Friday:", Friday)
    fmt.Println("Saturday:", Saturday)
}

iota 的使用示例

iota 的值在每个 const 声明块中从 0 开始,每增加一行,值增加 1。可以使用 iota 创建复杂的常量表达式。

package main

import "fmt"

func main() {
    const (
        a = iota + 1 // 1
        b            // 2
        c            // 3
    )

    const (
        x = 1 << iota // 1 << 0 = 1
        y             // 1 << 1 = 2
        z             // 1 << 2 = 4
    )

    fmt.Println("a:", a)
    fmt.Println("b:", b)
    fmt.Println("c:", c)

    fmt.Println("x:", x)
    fmt.Println("y:", y)
    fmt.Println("z:", z)
}

5. 常量的特点

  • 编译时确定值:常量的值在编译时确定,不能在运行时改变。
  • 隐式类型转换:常量可以在需要时进行隐式类型转换。
  • 提高代码可读性:使用常量可以使代码更易读、易维护。

6. 常量和变量的区别

  • 常量使用 const 声明,值在编译时确定,且不可改变。
  • 变量使用 var 声明,值可以在运行时改变。

示例

package main

import "fmt"

func main() {
    const pi = 3.14159
    var radius = 5.0

    area := pi * radius * radius
    fmt.Println("Area of the circle:", area)

    // 尝试修改常量会导致编译错误
    // pi = 3.14 // 编译错误:cannot assign to pi
}

总结

Go 语言的 const 关键字用于声明常量,常量的值在程序编译时确定,且不可改变。通过使用常量,可以提高代码的可读性和维护性。iota 标识符常用于生成枚举类型,方便创建一组相关的常量。掌握常量的使用方法,可以编写更加健壮和高效的 Go 程序。


原文链接:codingdict.net