当前位置:网站首页>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 类型的指针变量,使用代码如下所示。
今天的最后一个知识点是运算符的优先级,如果你有其它语言基础,这部分自动忽略即可。
边栏推荐
- 快速上手,征服三种不同分布式架构调用方案
- 一文带你搞懂中断按键驱动程序之poll机制
- Buckle exercise - rectangular area does not exceed the maximum value of K and (hard)
- Unsafe的一些使用技巧
- 快手“弃”有赞与微盟“结亲”,电商SaaS行业竞争格局将变?
- Centos7 environment uses Mysql offline installation package to install Mysql5.7
- POJ 3101 Astronomy (Mathematics)
- 4 of huawei offer levels, incredibly side is easing the bit in the interview ali?
- 【TypeScript】接口类型与类型别名:这两者的用法与区别分别是什么?
- 力扣练习——63 找到字符串中所有字母异位词
猜你喜欢
Research on motion capture system for indoor combined positioning technology
VSCode remote connection server error: Could not establish connection to "xxxxxx" possible error reasons and solutions
[E-commerce operation] Do you really understand social media marketing (SMM)?
从产品维度来看 我们为什么不能完全信任Layer2?
A little self-deprecating deconstruction about farmers "code"
第2章-矩阵及其运算-矩阵创建(1)
模块九 - 设计电商秒杀系统
Memory problems difficult to locate, it is because you do not use ASAN
零基础想自学软件测试,有没有大佬可以分享下接下来的学习书籍和路线?
Module 9 - Designing an e-commerce seckill system
随机推荐
基于UiAutomator2+PageObject模式开展APP自动化测试实战
Break through the dimensional barriers and let the dolls around you move on the screen!
[Go WebSocket] 多房间的聊天室(一)思考篇
CPU多级缓存与缓存一致性
杭电多校-Loop-(不确定性贪心+线段树)
蔚来-软件开发工程师一面记录
基于UiAutomator2+PageObject模式开展APP自动化测试实战
Double.doubleToLongBits() method uses
POJ 2891 Strange Way to Express Integers (Extended Euclidean)
暑期总结4
越折腾越好用的 3 款开源 APP
Pulling drills - 56 Finding the right interval
JWT implements login authentication + Token automatic renewal scheme
从产品维度来看 我们为什么不能完全信任Layer2?
模块九 - 设计电商秒杀系统
英特尔推送20220809 CPU微码更新 修补Intel-SA-00657安全漏洞
SQL优化最强总结 (建议收藏~)
【电商运营】你真的了解社交媒体营销(SMM)吗?
一文带你搞懂中断按键驱动程序之poll机制
Intel pushes 20220809 CPU microcode update to patch Intel-SA-00657 security vulnerability