常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只能是布尔型、数字型(整数型、浮点型和复数)和字符串型

常量的定义格式:

//const 常量名     类型      值
const identifier [type] = value

可以省略类型说明符[type],因为编译器可以根据变量值来推断其类型。

  • 显式类型定义: const b string = "itbsl"
  • 隐式类型定义: const b = "itbsl"

无论是变量还是常量,不同类型的都不能显式的声明在一行:

var a int, b float32 = 1, 2.4   //编译器不通过
const c int, d float32 = 3, 4.4 //编译器不通过
const c, d float32 = 3, 4 //编译通过(此时c和d都是float32类型)
const c, d = 3, 4.4 //编译通过(此时c是int类型,d是float64类型)

说明:我们可以通过reflect.Typeof(变量名)打印变量或常量的类型

常量可以用len()、cap()、unsafe.Sizeof()常量计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不通过,因为在编译期间自定义函数均属于未知,因此无法用于常量的赋值:

package main

import "unsafe"

const (
a = "cstxco"
b = len(a)
c = unsafe.Sizeof(a)
)
func main() {
println(a, b, c)
}

iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

在每一个const关键字出现时,被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。iota可以被用作枚举值:

const(
a = iota
b = iota
c = iota
)

第一iota等于0,每当iota在新的一行被使用时,它的值都会自动加1;所以a=0,b=1,c=2,可以简写为如下形式:

const(
a = iota
b
c
)

用法示例:

package main

import "fmt"

func main() {
const(
a = iota //0
b //1
c //2
d = "itbsl" //独立值,iota += 1
e //itbsl iota += 1
f = 200 //200 iota += 1
g //200 iota += 1
h = iota //7,恢复计数
i //8
) fmt.Println(a, b, c, d, e, f, g, h, i)
}

输出结果为

0 1 2 itbsl itbsl 200 200 7 8

我们可以把iota理解为const里的行数

const(
a = iota
b = iota
c, d = iota, iota
)
fmt.Println(a, b, c, d)

输出结果为

0 1 2 2

当我们定义常量时,如果多个常量的值相同,后面的常量可以直接不赋值,默认等同于上面已赋值的常量的值

package main

import "fmt"
//当我们定义常量时,如果多个常量的值相同,后面的常量可以直接不赋值,默认等同于上面已赋值的常量的值
const (
a = "itbsl"
c
d
)
func main() {
fmt.Println(a, c, d)
}

输出结果为

itbsl itbsl itbsl

Go语言常量的更多相关文章

  1. 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型

    [源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...

  2. GO语言学习(八)Go 语言常量

    Go 语言常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifier ...

  3. 不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)

    不同标准下的C语言常量范围的默认类型的检测 一.C90与C99标准下的不同常量范围的默认类型     C90标准下对不同常量范围默认类型的检测实现及运行结果: C99标准下对不同范围默认类型的检测实现 ...

  4. JavaScript语言常量和变量

    我们在以往介绍使用JavaScript编写一个HelloJS的小程序,其中我们就用到变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字const,就可以把该 ...

  5. GO语言常量和变量

    标识符与关键字 标识符 人为定义有特殊意义的词,Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头. 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符. GO语言中有25 ...

  6. 07 C语言常量

    常量的定义 常量是指固定的值,固定值在程序执行期间不会改变.这些固定值,又叫做字面量. 常量可以是任意的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 不要搞得太复杂, ...

  7. 【C语言】C语言常量和变量

    目录: [常量]   · 定义   · 分类   · 特殊字符型常量 [变量]   · 定义   · 定义变量   · 变量的使用   · 变量使用注意   · 变量常见问题 1.常量 · 定义 常量 ...

  8. Swift语言—常量、变量、类型赋值

    常量:常量在作用域内不能被赋值且不会发生改变,只读不写,每个常量都必须有唯一的名字和内存空间:关键字:let   变量:变量在作用区域内可以它的值可以被改变,可读可写可覆盖,每个常量都必须有唯一的名字 ...

  9. C语言常量与指针

    C语言功能强大而丰富,还表现在const与指针的结合使用上,对不同的问题,它提供不同的保护,特别有用的是指向常量的指针 本文地址:http://www.cnblogs.com/archimedes/p ...

  10. c 语言常量

    1,整数常量 整数常量可以是十进制.八进制或十六进制的常量.前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制. 整数常量也可以带一个后缀,后缀是 U 和 L 的组合 ...

随机推荐

  1. fastJson注解@JSONField使用的一个实例

    1.实体类 package jsonArrayjsonObject.cn; import java.io.Serializable; import java.util.Date; import com ...

  2. css选择器querySelector

    * querySelector(css选择器)* 通过css选择器去获取一个元素* 它获取到的只有一个元素,如果说是有重复的,那它只取第一个** 主语* document 从整个文档里去获取元素* 父 ...

  3. 查找单链表中倒数第K个位置上的结点,若查找成功返回该节点的data域,若不成功只返回0

    算法的基本设计思想:定义两个指针变量p和q  初始时均指向头结点的下一个结点(即链表的第一个结点)p沿链表移动,当p移动到第k个结点时,q指针开始与p指针同时移动,当p指针移动到最后一个结点时,q指针 ...

  4. "Web Scraping with Python"笔记(一)

    1.  合法性:抓取的数据用于个人使用,不存在问题:数据用于转载,需注意抓取的数据类型. 一般情况,抓取的真实数据(营业地址,电话清单等)允许转载.而原创数据(比如意见和评论)受版权限制不能转载. 2 ...

  5. 牛客小白月赛12 J 月月查华华的手机(序列自动机)

    ---恢复内容开始--- 题目来源:https://ac.nowcoder.com/acm/contest/392/J 题意: 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机. ...

  6. 【python-dict】dict的使用及实现原理

    以下内容是针对:python源码剖析中的第五章——python中Dict对象 的读书笔记(针对书中讲到的内容进行了自己的整理,并且针对部分内容根据自己的需求进行了扩展) 一.Dict的用法 Dict的 ...

  7. jsp中<c:if>标签的用法

    <c:if test="${(tbl.column1 eq '值') and (tbl.column2 eq 'str')}"> <table>...< ...

  8. linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group --学习

    一./etc/passwd 和/etc/shadow解释 与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码 ...

  9. CentOS7 安装oracle客户端

    1.本机环境CentOS7 64 [root@localhost etc]# uname -a Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 ...

  10. 符合Chrome58的证书制作

    Chrome 58开始取消了对通用名检查的支持, 但网上大多数OpenSSL使用教程没有提及这一点, 制作出的证书总是提示ERR_CERT_COMMON_NAME_INVALID 错误, 所以分享出解 ...