Golang语言基础之常量和字面量

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.常量

1.常量概述

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 

换句话说,常量在定义时必须赋值,且程序运行期间其值不能改变。

2.常量声明

常量的声明和变量声明非常类似,只是把"var"换成了"const",常量在定义的时候必须赋值。

举个例子:
  package main

  import "fmt"

  func main(){
    // 在声明常量时必须赋值,且在运行过程中不支持修改
    const pi = 3.1415926
    const haha = "哈哈"

    // 也支持同时定义多个常量
    const (
      xixi = "嘻嘻"
      heihei  = "嘿嘿"
      // 多常量定义时,如果没有赋值,则默认和上一行的常量赋值相同。
      wuwu	
      pupu	
    )


    var school = "清华大学"

    // 常量一点定义,就不支持修改,否则编译报错。
    // pi= 3.14
    // 变量是可以修改的
    school = "北京大学"

    fmt.Println(pi,school,haha,xixi,heihei,wuwu,pupu)
  }

3.iota

3.1 iota概述

iota是go语言的常量计数器,只能在常量的表达式中使用。iota在const关键字出现时将被重置为0。

const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 

使用iota能简化定义,在定义枚举时很有用。

3.2 几个常见的iota示例

package main

import "fmt"

func main() {
	const (
		n1 = iota // iota在const关键字出现时将被重置为0。
		n2        //1
		_         // 使用"_"跳过某些值
		n4        //3
	)
	fmt.Println(n1, n2, n4)

	const (
		n5 = iota //0
		n6 = 100  //100,在iota声明中间插队
		n7 = iota //2
		n8        //3
	)

	const n9 = iota //0
	fmt.Println(n5, n6, n7, n8, n9)

	// 定义数量级
	const (
		_  = iota
		KB = 1 << (10 * iota)
		MB = 1 << (10 * iota)
		GB = 1 << (10 * iota)
		TB = 1 << (10 * iota)
		PB = 1 << (10 * iota)
	)
	fmt.Println(KB, MB, GB, TB, PB)

	// 多个iota定义在一行,值是相同的
	const (
		a, b = iota + 1, iota + 2 //1,2,该行iota为0
		c, d                      //2,3,该行iota为1
		e, f                      //3,4,该行iota为2
	)
	fmt.Println(a, b, c, d, e, f)
}

3.3 iota使用总结

(1)const声明如果不写,默认就和上一行一样;

(2)遇到iota就初始化默认值为零;

(3)const中每新增一行变量声明iota就递增1;

二.字面量

没有出现变量名,直接出现了值,基础类型的字面量相当于是常量。

举个例子:
  package main

  import "fmt"

  func main() {
    // 整形字面量和浮点型字面量
    fmt.Printf("%t\n", 10 == 10.00)

    // 虚数字面量
    fmt.Printf("%v\n", .4i)

    // Unicode和rune字面量
    fmt.Printf("%t\n", '\u4f17' == '众')

    //字符串字面量
    fmt.Printf("Hello\nWorld\n!\n")
  }

posted @ 2024-06-08 01:10  尹正杰  阅读(39)  评论(0编辑  收藏  举报