Go定义常量和枚举类型

Go定义常量和枚举类型

1、使用const定义常量

package main

func main() {

	const a = 1              //使用const定义常量
	const b, c = "b", "c"    //使用const定义常量
	const filename = "a.txt" //使用const定义常量
}

2、可以定义在包内或者函数体内

package main

import "fmt"

const c = "c" //可以定义在包内,函数体外

func main() {
   const a1, a2 = 10, 5 //可以定义在函数内部
   const s = "sss"      //可以定义在函数内部
   fmt.Println(c)
}

3、使用括号定义一组常量

package main

func main() {

   const (
      a = 1
      b = 2
      c = "c"
      d = 1.5
   ) //使用括号定义一组常量
}

4、可以指定常量的类型

package main

func main() {

   const a int = 1       //可以指定类型
   const b int64 = 2     //可以指定类型
   const c string = "c"  //可以指定类型
   const d float32 = 1.5 //可以指定类型

   const a1 = 1   //可以不指定类型
   const b1 = 2   //可以不指定类型
   const c1 = "c" //可以不指定类型
   const d1 = 1.5 //可以不指定类型

}

5、常量可以作为各种类型使用

package main

import "fmt"

func add(a, b int) int {
	return a + b
}
func add2(a, b float32) float32 {
	return a + b
}

func main() {

	const a1, a2 = 10, 5
	v := add(a1, a2) //可以作为int类型使用
	fmt.Println(v)
	v2 := add2(a1, a2) //可以作为float32使用
	fmt.Println(v2)
}

可以看到a1和a2是常量,可以作为int,也可以作为float32

6、使用iota关键字,定义枚举类型

6.1、自增类型的iota

package main

import "fmt"

func main() {

   const (
      cpp    = iota //0
      python        //1
      java          //2
      golang        //3
   )
   fmt.Println(cpp, python, java, golang)
}

6.2、也可以不用中间某个值,用-代替就行

package main

import "fmt"

func main() {

   const (
      cpp    = iota //0
      python        //1
      _             //2
      golang        //3

   )
   fmt.Println(cpp, python, golang)
}

6.3、可以执行运算

定义b,kb,mb,gb,tb

package main

import "fmt"

func main() {

   const (
      b  = 1 << (10 * iota) //1
      kb                    //1024
      mb                    //1048576
      gb                    //1073741824
      tb                    //1099511627776
   )
   fmt.Println(b, kb, mb, gb, tb)
}
posted @ 2022-06-11 16:11  南风丶轻语  阅读(117)  评论(0编辑  收藏  举报