← 返回首页
Go基础教程(八)
发表时间:2022-11-11 23:47:31
常量

Go 语言定义常量与Javascript类似,将 var关键字替换成 const 即可。

1.const常量

package main

import (
    "fmt"
)

func main() {
    const pi = 3.141592
    const domain = "www.simoniu.com"
    const a, b, c = 1, false, "hello" //多重赋值
    fmt.Println(pi)
    fmt.Println(domain)
    println(a, b, c)
}

运行结果:

3.141592
www.simoniu.com 
1 false hello   

2.定义多个常量

常量还可以用来模拟枚举:

数字 0、1 和 2 分别代表未知性别、女性和男性。

package main

import "fmt"

func main() {
    const (
        Unknown = 0
        Female  = 1
        Male    = 2
    )
    gender := Male
    switch gender {
    case 0:
        fmt.Println("无名氏")
        break
    case 1:
        fmt.Println("小姑娘")
        break
    case 2:
        fmt.Println("老爷们")
        break
    default:
        fmt.Println("输入错误")
    }
}
老爷们

3.iota

Go 语言中其实是没有枚举类型的,但是可以使用常量iota 来模拟枚举。上面的例子可以改写如下:

package main

import "fmt"

// 定义一个名为 Gender 类型, 实际类型为 int
type Gender int

// 定义性别男女
const (
    Unknown Gender = iota // 将枚举值 Unknown 定义为 Gender 类型,并搭配 iota 开始生成枚举值,默认从 0 开始
    Male
    Female
)

func main() {
    // 输出枚举值
    fmt.Println(Female, Male)
    // 使用枚举类型,并赋值
    var gender Gender = Male
    fmt.Println(gender)
}

运行结果:

2 1
1 

但是这输出 2,1 数字表示性别不是很直观,我可以把枚举值替换为字符串。

package main

import "fmt"

// 定义一个名为 Gender 类型, 实际类型为 int
type Gender int

// 定义性别男女
const (
    Unknown Gender = iota // 将枚举值 Unknown 定义为 Gender 类型,并搭配 iota 开始生成枚举值,默认从 0 开始
    Male
    Female
)

// 定义一个 Gender 类型的方法 String(), 返回字符串
func (s Gender) String() string {
    switch s {
    case Female:
        return "女"
    case Male:
        return "男"
    }
    return "N/A"
}

func main() {
    // 输出枚举值
    fmt.Println(Female, Male)
    // 使用枚举类型,并赋值
    var gender Gender = Male
    fmt.Printf("%s,%d\n", gender, gender)
}

运行结果:

女 男
男,1