当前位置:网站首页>Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇
Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇
2022-08-10 11:03:00 【51CTO】
学习前的铺垫
如果一门语言是动态语言,那数据类型不是很重要,但当待学习的语言是静态语言时,数据类型的重要性就凸显出来了,而且必须作为必备只是进行学习。
在 Go 语言中,数据类型主要用于声明变量和函数返回值的类型,在声明时是为了把数据所需的内存规定出来,这样可以充分利用内存。
因为有其它语言的基础,所以直接学习 Go 中的各类型即可。
Go 数字类型
数字类型分为三种,即整型,浮点型和其它数字类型,其中整型又分为:
- uint8:无符号 8 位;
- uint16:无符号 16 位;
- uint32:无符号 32 位;
- uint64:无符号 64 位;
- int8:有符号;
- int16:有符号;
- int32:有符号;
- int64:有符号。
浮点类型,包含两种,分别是 float32
,float64
,还有 complex64
和 complex128
。
其它数字类型说明如下:
byte
:与无符号 int,即int8
类似;rune
:无符号int32
类似;uint
:32 位或者 64 位;int
:与unit
类似;uintptr
:无符号整数。
以上都是数字类型,除此之外还有更多内容,都将在后文重点学习。
Go 变量
Go 中变量的声明,在上一篇博客中我们已经涉及,这次我们展开说说。
首先,可以一次申请多个变量:
参考下述测试代码:
在声明变量的时候如果没有给初始值,系统自动赋零值,例如 int 类型为 0,float 类型为 0.0 ……(上篇博客已经学习,可以回顾一下)
目前你仅学习了数字类型,所有数字类型的零值,都是 0。
Go 中的变量声明也可以省略变量类型,即下述代码也可正常运行。
系统自动推断变量类型。
变量声明简化写法
使用 var 声明变量时,还可以简写,例如:
该写法叫做推导声明写法,编译器会根据右值类型推断左值类型,而且需要注意,使用 :=
需要左值变量必须在之前没有没定义过,否则就会报错,测试代码如下:
在 Go 如果声明了一个变量,但是未使用,同样会报错,例如下述代码。
错误信息是 7:2: b declared but not used
,这点非常有趣,在其它语言是没有类似的验证的,但这保证了无用变量的声明和空间的浪费。
并行/同时赋值
在 Go 中,可以同时对多个变量赋值,测试代码如下所示。
相应的如果希望交换两个变量值,也可以像 Python 一样,直接进行交换。
这里先认识一个特殊的符号,_
空白标识符,该变量可以用于抛弃值,例如下述代码。
其中 1 会被抛弃,其中 _
实际是一个只写变量,不可读,该变量也被叫做匿名变量,它不占内存空间,也不会分配内存,匿名变量可以多次声明,即下述代码:
Go 常量
常量就是不可被修改的变量,Go 常量支持的数据类型有布尔型,数字型,字符串型,定义语法格式是:
其中 type
被声明叫做显式定义,无 type
表示隐式声明。
多个相同类型的声明可以简写成一行。
Go 中有一个特殊常量 iota
,是一个可以被编译器修改的常量。
iota
在 const 关键字出现时被充值为 0,const 中每新增一行常量声明,iota
增加一次计数,所以将 iota 当成 const 语句块的行索引也可以。
Go 运算符
运算符知识点在任何语言都中非常类似,一元的有:+
,-
,*
,/
,%
,++
,--
,在 Python 中不见的自增和自减操作符又重新出现了。
上述操作符一般叫做算数运算符,除此之外还有关系运算符,即大于小于等内容。
逻辑操作符也是三个,分别是 逻辑与 &&
,逻辑或 ||
,逻辑非 !
。
位运算符可以先略过,后续用到在考虑复习一下。
在接下来就是赋值运算符,即与 =
号相关的运算符,也是通用知识点,直接掌握了。
重点要说明的是下述两个特殊运算符,这里与 C 语言同源,即 &
取地符,*
指针变量标记。
声明一个 int 类型的指针变量,使用代码如下所示。
今天的最后一个知识点是运算符的优先级,如果你有其它语言基础,这部分自动忽略即可。
边栏推荐
- Will SQL and NoSQL eventually converge?
- What is affecting MySQL performance?
- 力扣练习——64 最长和谐子序列
- Where can I view the version record of WeChat applet submission review history?
- AUTOCAD——减少样条曲线控制点数、CAD进阶练习(三)
- ISO9001在讲什么?过程方法和风险思维
- VSCode远程连接服务器报错:Could not establish connection to “xxxxxx”的可能错误原因及解决
- 英特尔推送20220809 CPU微码更新 修补Intel-SA-00657安全漏洞
- Hangdian Multi-School-Loop-(uncertainty greedy + line segment tree)
- 使用哈工大LTP测试分词并且增加自定义字典
猜你喜欢
微信小程序,全局变量一个地方改变了其他地方的状态也跟着改变。
The brave rice rice, does not fear the brush list of 】 list has a ring
关于“码农”的一点自嘲解构
A case of violent parameter tuning in machine learning
今天面了个腾讯拿38K出来的大佬,让我见识到了基础的天花板
SQL优化最强总结 (建议收藏~)
Weilai-software development engineer side record
老板加薪!看我做的WPF Loading!!!
石墨文档打开文档时快速定位到上次写的位置
如何使用工程仪器设备在线监测管理系统
随机推荐
【Untitled】
第二十二章 源代码文件 REST API 参考(四)
Break through the dimensional barriers and let the dolls around you move on the screen!
Kyligence 通过 SOC 2 Type II 审计,以可信赖的企业级产品服务全球客户
即时零售业态下如何实现自动做账?
POJ 2891 Strange Way to Express Integers (Extended Euclidean)
不止跑路,拯救误操作rm -rf /*的小伙儿
L2 applications from a product perspective: why is it a playground?
Codeforces 862 C. Mahmoud and Ehab and the xor (技巧)
Centos7环境使用Mysql离线安装包安装Mysql5.7
rider内Mono脚本找不到引用资源
快速上手,征服三种不同分布式架构调用方案
从产品角度看 L2 应用:为什么说这是一个游乐场?
【小程序 | 启航篇】一文打通任督二脉
YTU 2894: G--我要去内蒙古大草原
POJ 2891 Strange Way to Express Integers (扩展欧几里得)
第2章-矩阵及其运算-矩阵创建(1)
Research on motion capture system for indoor combined positioning technology
What is an abstract class
负载均衡原理分析与源码解读