博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章-go中的常量
阅读量:2197 次
发布时间:2019-05-02

本文共 1188 字,大约阅读时间需要 3 分钟。

前言

既然go中存在变量,那么也会有与变量相对的常量。那么在go中如何去声明和使用常量呢?下面我会娓娓道来

注意本文是基于go 1.12.5的,可能会与其他版本存在差异。

常量声明

常量名的命名规则与变量的命名规则一致。而常量声明使用的是const关键字(有点类似Java中的final),不过与变量不一样,常量声明没有这么多种声明方式。需要注意以下两点

  1. 常量值必须要是编译期可以确定的数字、字符串和布尔值。
  2. 常量声明时必须进行赋值操作

使用const声明

常量的声明十分简单,只要看看下面的示例就能够知道怎么声明了。

const i int = 1 // 常量声明方式 const 常量名 常量类型 = 常量值

上面的例子有一点很值得吐槽,既然常量声明是必须赋值,这样就没有必要声明常量类型了。因为常量类型可以通过类型推导而推导出来。例如下面的例子

const i = 1 // 常量声明方式 const 常量名 = 常量值

声明多个常量

常量和变量一样,也支持同时声明多个,例如下面的例子

// 等价于 // const i = 1 // const j = "hello" // const k = trueconst i,j,k =1,"hello",true

当然也支持换一种写法,这种写法叫做常量组

const (	i = 1	j="hello"	k=true)

需要注意,在常量组中如果下一个常量与上一个常量值相同,可以进行以下的简写(这个特性感觉有点扯淡,多个类型和值相同的常量不明白想用来干嘛

const(	i = 1	j // 类型和值与上一个常量 i 相同)

常量使用

常量声明以后也是离不开使用的,下面会向大家演示如何使用常量。当然也会带上一些使用时的注意事项

常量分类

常量和变量一样,也分为以下2种:

  1. 全局常量
  2. 局部常量:声明在函数内的常量,和局部变量不同。声明后未被使用也不影响编译。

下面会通过一个例子做演示

package mainconst global = 1 // 全局常量func main() {	const local  = 2 // 局部常量}

常量作用域

常量与变量一样,也支持作用域内的同名常量会被覆盖这个特点,下面会用一个简单的例子演示作用域覆盖的特点

package mainimport "fmt"const i  = true // 全局常量,作用域为main包func main() {	const i = 1 // 局部常量,作用域为main函数	if true {		const i  = "test" // 局部常量,作用域为if		fmt.Println(i) // 作用域还在if中,输出为"test"	}	fmt.Println(i) // 作用域回到main函数中,输出1}

运行结果

test1

转载地址:http://ngoub.baihongyu.com/

你可能感兴趣的文章
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>