Go变量常量运算符

变量是程序运行时才确定其值,而常量是程序在编译时就确定了其值

1、变量

变量是对一块数据存储空间的引用,即变量名可以看做该数据存储空间的别名,我们可以通过该变量名来使用这一块数据存储空间。变量属于临时变量,当程序运行完后,会释放该块存放数据的空间,而变量也会随着空间释放而消失

1.1 单变量声明

变量声明格式

  1. var name type(全定义声明格式)
  2. var name = value(类型推导声明格式)
  3. name := value(省略声明格式)

参数:var为声明关键字,name为变量名,type为数据类型,value为变量值

1、var name type(全定义声明格式)

该声明格式为标准变量声明格式,若不赋予初始值则会使用默认值

进程会向内存申请一个名称为name的变量,指定内存大小为type尺寸,值为默认值

数字类型默认值:0

string类型默认值:“”

complex默认值:(0+0i)

bool默认值:false

error默认值:<nil>

2、var name = value(类型推导声明格式)

该声明格式为类型推导格式,变量会根据value值来自行判断数据类型,内存尺寸自动匹配

3、name := value(省略声明格式)

该声明格式为省略声明格式,省略var来声明变量,使用操作符 := 可以高效的创建变量,但需要注意的是左边的变量不能是已存在的变量并且该变量不能用于函数体外

1.2 多个变量同时声明

声明不同类型的多个变量

var (  name1 type1

            name2 type2)

声明同类型的多个变量

var name1,name2 type

var name1,name2 = value1,value2

name1,name2 := value1,value2

1.3 变量赋值

在Go语言中,变量初始化和变量赋值为两个概念

在一个程序汇中,当你声明了一个变量后,你必须在下面引用过该变量,否则会编译错误

Go语言支持多重赋值,即在两个变量进行交换其值时,不必在引用第三个变量

1.4 匿名变量

匿名变量的值为你所要丢弃的值,即当你不需要这个返回值或者值时,你可以使用匿名变量来接受这个值

匿名变量使用下划线(‘_’ )表示

func GetName() (firstName, lastName, nickName string) { 
 return "May", "Chan", "Chibi Maruko" 
} 
若只想获得nickName,则函数调用语句可以用如下方式编写:
_, _, nickName := GetName()

1.5 局部变量和全局变量

局部变量是指在函数体内声明的变量,它的作用于只在函数体内,参数和返回值变量也是局部变量

全局变量是指在函数体外声明的变量,它可以在整个包甚至外部包(被导出后)使用,全局变量可以在任何函数中使用

注意:程序中全局变量和局部变量名称可以相同,但是函数内的局部变量会被优先考虑

2、常量

在Go语言中,常量是指编译期间就已知且不可改变的值,它可以是数值类型、布尔类型、字符串类型等

2.1 字面常量

字面常量是指程序中硬编码的常量。如100、-1为浮点类型的常量;true为布尔类型的常量

Go语言的字面常量更接近我们自然语言中的常量概念,它是无类型的。只要这个常量在相应类型的值域范围内,就可以作为该类型的常量,比如上面的常量100可以赋值给int、uint、int32等类型的变量

2.2 常量定义

常量定义通过const关键字,它可以限定常量类型,但不是必须的。如果定义常量是没有指定类型,那么它和字面常量一样是无类型的变量

常量定义的右值可以是一个在编译器运算的常量表达式,但不可以是需要运行期才能得出结果的表达式

const mask = 1 << 3            //√
const Home = os.Getenv("HOME") //×

2.3 预定义常量

Go语言预定义了这些常量:true、false和iota

iota比较特殊,可以认为是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其值会自动加一

上图例子中,通过const跟一对圆括号的方式定义一组常量,这种定义法在Go语言中通常用于定于枚举值,Go语言并不支持其他语言明确支持的enum关键字

3、运算符

Go语言内置的运算符有:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

算术运算符:

 注意:Go语言有i++,但没有++i;除法运算其分母不能为0

关系运算符:

 

逻辑运算符:

 

位运算符:

 

赋值运算符:

 

其他运算符:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏大橙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值