Go语言中的常量
1 概述
常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构类型,可以保证不被更改。
语法如下
2 定义单个常量
const 常量名 <可选的类型> = 常量值
const c1 int = 1000
Go语言中,标识符(常量名)是否大小写,取决于是否需要在导出时被识别。
常量的值仅仅支持,基础类型,字符串,字符,整型,浮点,布尔。
3 类型推导
类型可以通过值推导出来,大多数情况可以省略类型,例如
const c2 = 1000
除非你想使用例如,int8, byte,float32这些非默认类型时,需要指定类型,例如
const c3 int16 = 1000
4 定义多个常量
可以一行定义多个常量,例如:
const c4, c5 = 42, 1000
也可以使用 const()定义块,定义多个,每个常量单独一行,例如
const (
c6 = 42
c7 = 1000
)
推荐使用const()块语法,一次性定义多个。
const()块定义时,如果常量未给出定义,则延续上面的定义规则,例如:
const (
c7 = 42
c8 // c8 = 42
c9 // c9 = 42
)
此时,c8, c9, 值都是42。
5 iota迭代定义常量
const配合iota关键字使用,可以定义一组由0开始+1迭代的常量
演示语法:
const (
gender_secret = iota
gender_male // = iota
gender_female // = iota
)
此时,三个常量值,分别是,0, 1, 2
iota的规则是:若iota出现在const()中,那么const()定义的第一行的iota就是0,第二行就是0+1=1,不论iota是否被常量使用。演示如下:
const (
c1 = 42 // iota = 0,虽然未使用iota,但后边(const()中)有使用,此时iota被初始化为0,下面每行累加1
c2 = iota // iota = 1,iota继续累加,使用了iota
c3 = 1024 // iota = 2,同样未使用,但iota的值继续累加。c3 被定义为1024
c4 // iota = 3,c4延续上面的定义c4=1024,iota继续累加
c5 = iota // iota = 4,iota继续累加,使用了iota
c6 = iota // iota = 5,iota继续累加,使用了iota
)
此时结果为:42, 1, 1024, 1024, 4, 5
6 常量在编译时确定
编译时确定,因此不能使用变量为其赋值。可以使用,确定的字面量,字面量运算,内置函数运算,其他定义常量,这些在编译时可以确定的内容为常量赋值,演示为:
const c1 = "hank"
const (
c2 = c1
c3 = 42 + 1024
c4 = len("hank")
)
以上语法都可以!
7 常量的作用
- 将特殊的值,语义化。使用时,可以知道其具体含义。
- 数据的集中管理,更改常量定义,即可完成全部的修改。
- 保证不被程序的其他代码所更改。
完!
原文出自:小韩说课
微信关注:小韩说课
Go语言中的常量的更多相关文章
- C语言中字符串常量到底存在哪了?
常量存储总结局部变量.静态局部变量.全局变量.全局静态变量.字符串常量以及动态申请的内存区 1.局部变量存储在栈中2.全局变量.静态变量(全局和局部静态变量)存储在静态存储区3.new申请的内存是在堆 ...
- 收藏:C语言中字符串常量到底存在哪了?
来源:https://www.cnblogs.com/jaysir/p/5041799.html 常量存储总结局部变量.静态局部变量.全局变量.全局静态变量.字符串常量以及动态申请的内存区 1.局部变 ...
- 004_go语言中的常量
代码演示 package main import "fmt" import "math" const s string = "constant&quo ...
- 有关指针和C语言中的常量
常量类型(五种): 字面常量(2,3,6....) ; enum 定义的枚举常量; 字符常量('a','b'....) ; ...
- Rust语言中的常量,变量,运算符,数据类型
简单练练, 夏天太热. const MAX_POINTS: u32 = 100_100; fn main() { let mut x = 5; let y = 5; let y = y + 1; le ...
- Swift语言指南(一)--语言基础之常量和变量
原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...
- C语言中常量
C语言中常量 不具有数据类型的常量------宏常量 宏常量定义:用一个标识符号来表示的常量,又称为符号常量. 宏定义: #define 标识符 字符串 ----- ...
- Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4 为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...
- Go语言入门(二)Go语言中的变量、常量、数据类型、流程控制以及函数
Go语言中的变量 通常用var关键声明变量,有常规方式和简化方式. 常规方式: var name1 type1 name1 = value1 //赋值 简化方式: var name2 = value1 ...
随机推荐
- canvas交互部分
mousemove let mouse = { x: undefined, y: undefined, } // 鼠标监听事件,获取鼠标移动的相应坐标 window.addEventListener( ...
- 解决升级PHP7.1后,发邮件时提示“fsockopen(): Peer certificate CN=`xxx.xx.com' did not match expected CN=`113.x.xx.98”
把项目环境升级到PHP7.1后,发现在不使用SSL时可以使用IP发邮件,可设置成SSL时就只能使用hostname发送,PHP提示的错误信息大致意思是说,IP与hostname无法通过SSL验证,修改 ...
- 团队项目个人进展——Day02
一.昨天工作总结 冲刺第二天,昨天成功接入高德地图接口,并通过官方提供的文档实现了地图定位功能,通过官方在GitHub上提供的Demo可以看出还能实现天气查看,路径规划等功能: 二.遇到的问题 虽然通 ...
- 【转】Kettle发送邮件步骤遇到附件名是中文名变成乱码的问题解决办法
原文:http://www.ukettle.org/thread-607-1-1.html 本帖最后由 大白菜 于 2016-3-7 10:18 编辑 导语:看到群里很多朋友问Kettle发送邮件附件 ...
- Windows 7系统启动MongoDB失败解决办法?
问题现象: 1.在配置Python环境安装MongoDB时发现在“服务”里面手动启动失败,报错如下: 2.在cmd里面也无法启动,注意这里要以管理员身份启动cmd哦 问题解决: 1.需要先在bin下执 ...
- C++ 入门随手笔记及联系
一.第一个C++程序 1.文件扩展名 C++源代码的文件扩展名.cpp.C.cxx.c(需要指定编译语言) 自定义的头文件依然保留.h 2.头文件 C++标准库的头文件不带.h,最常用的是ios ...
- [翻译] DoImagePickerController
DoImagePickerController An image picker controller with single selection and multiple selection. Sup ...
- HDFS NameNode内存全景
一.概述 从整个HDFS系统架构上看,NameNode是其中最重要.最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群 ...
- Ubuntu 14.04 修改时区
执行下面命令,并按照提示选择"Asia/Shanghai": sudo dpkg-reconfigure tzdata 正常执行结果为: Current default time ...
- 《关于oracle数据库的勒索病毒的预警》
近日,接部分机构反馈和安全厂商提醒,针对oracle数据库的勒索病毒攻击数量增加.该病毒存在较长潜伏期,会根据数据库实例创建时间距今是否满足1200天决定是否发起攻击.攻击通过执行恶意SQL脚本,加密 ...