常量

常量,一经定义不可改变的量,当出现不需要被更改的数据时,应该使用常量进行储存,从语法角度看,使用常量可以保证数据,在整个运行期间内,不会被更改

常量的值仅仅支持,基础类型,字符串,字符,整型,浮点,布尔

package main

import (
	"fmt"
	"math"
)

func consts() {
	const (
        // 类型可以通过值推导出来,例如这个 filename 就是一个字符串
		filename = "abc.txt"
		a, b     = 3, 4
	)
	var c int
	// 常量没有定义类型的情况下,其数值可作为各种类型使用
	c = int(math.Sqrt(a*a + b*b))
	fmt.Println(filename, c)
}

func main() {
	consts()
}

枚举

其实Golang并没有enum,但是可以使用 const和iota 来模拟枚举

package main

import (
	"fmt"
)

func enums() {
	const (
		// iota 初始化后会自动递增
		c = iota
		_
		java
		php
		javascript
	)

	const (
		b = 1 << (10 * iota)
		kb
		mb
		gb
		tb
		pb
	)

	// 0 2 4 3
	fmt.Println(c, java, javascript, php)

	// 1 1024 1048576 1073741824 1099511627776 1125899906842624
	fmt.Println(b, kb, mb, gb, tb, pb)
}


func main() {
	enums()
}