第三章-go中的常量

前言

既然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 = true
const i,j,k =1,"hello",true 

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

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

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

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

常量使用

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

常量分类

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

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

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

package main

const global = 1 // 全局常量

func main() {
	const local  = 2 // 局部常量
}

常量作用域

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

package main

import "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
}

运行结果

test
1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值