golang学习系列——8. 常量和变量

目录

 

常量

变量

作用域


常量

使用关键字 const 定义,用于存储不会改变的数据。

存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

实际验证如下, 提示错误 :“const initializer test literal is not a constant”

常量的定义格式:const ident [type] = value

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

const Pi = 3.14159
  • 显式类型定义: const b string = "abc"
  • 隐式类型定义: const b = "abc"

常量的值必须是能够在编译时就能够确定的;你可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得。

  • 正确的做法:const c1 = 2/3
  • 错误的做法:const c2 = getNumber()

因为在编译期间自定义函数均属于未知,因此无法用于常量的赋值,但内置函数可以使用,如:len()。

变量

声明变量的一般形式是使用 var 关键字:var ident type

至于为啥 type 在变量名称后面,有很多理由或者原因,随便列举一下,多的懒得写了:

1. 避免 c 中的 int *a, *b; 这样的写法, var  a,b *int

2. 这种语法能够按照从左至右的顺序阅读,使得代码更加容易理解。

3. ……

示例如下:

var a int
var b bool
var str string

也可以改写成这种形式:

var (
	a int
	b bool
	str string
)

这种因式分解关键字的写法一般用于声明全局变量。

当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil。记住,所有的内存在 Go 中都是经过初始化的。

变量的命名规则遵循骆驼命名法

但如果你的全局变量希望能够被外部包所使用,则需要将首个单词的首字母也大写。

变量可以在编译期间被赋值,也可以在运行时赋值

变量的声明和初始化可以组合起来

//var ident [type] = value
var a int = 5
var i = 5
var b bool = false
var str string = "hello"
str2 := str

var int1, int2 int
int1, int2 = 2, 3

作用域

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。

全局变量:

在函数体外声明,可以在整个包甚至外部包(被导出后)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。

局部变量:

在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。

尽管变量的标识符必须是唯一的,但你可以在某个代码块的内层代码块中使用相同名称的变量,则此时外部的同名变量将会暂时隐藏(结束内部代码块的执行后隐藏的外部同名变量又会出现,而内部同名变量则被释放),你任何的操作都只会影响内部代码块的局部变量。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值