常量声明
常量是程序在编译时就肯定的值,程序在执行时不能修改常量的值。声明常量使用关键字const。在声明常量时,须要对常量赋值。
const 名称 类型 = 值 或
const 名称 = 值 自动作类型推断html
const aa int = 123 //正确 const aa = 123 //正确 const aa int //错误
枚举
go语言没有提供枚举类型,能够借助常量来定义, iota默认值是0,在一组const定义中每次+1,编程
const ( E int = iota // 东 0 W // 西 1 S // 南 2 N // 北 3 ) const ( E1 int = iota + 3 // 东 3 W1 // 西 4 S1 // 南 5 N1 // 北 6 )
变量是编程语言的重要组成元素,变量至关于内存空间的一个别名,在程序执行时,根据声明的变量,会在内存中开辟这样的一块存储单元。
变量声明
变量声明定义了内存中存储的规则和规范,如,var aa int8
的意思是请在内存中给我一块1byte的长度的存储单元,我要用来存储数字的转化后的补码,这里的声明,至关于定义,至关于盖房子画的图纸,在初始化时,真正的落实和执行。可是在基本类型声明时,会直接对其作初实化,也就是说,对于基本类型,在使用var声明时,声明和初始化是一块儿作的。
声明的语法
直接声明式
var 变量名 类型
类型推断式
var 变量名 = 值
简短声明(该种方式只能用于局部变量)
变量名 := 值编程语言
变量初始化
变量初始化是刚在上文说的开辟内存空间,符初值,整型类型默认的初值为0,也能够在声明时对其设定
例:函数
var aa int8 = 8 var bb = 11 cc := 3
在基本类型中,变量的声明和初始化其实是一步,这里之因此分开阐述是为了说明实际上这是两步操做
变量赋值
在声明了变量后,就能够修改变量的值
变量的赋值很简单,使用=
进行赋工具
注意
已经声明了的变量不能对其再次声明
如:ui
var aa int = 8 var aa int8
当咱们要把一个值变成计算机能够识别的处理,须要肯定两点编码
对于整型数据,在计算机内部是以补码的方式,存储长度,go语言的提供的多种长度不一样的整型数据类型。以下:spa
类型 | 长度 |
---|---|
int8 | 1byte |
int16 | 2byte |
int32 | 4byte |
int64 | 8byte |
int | 根据系统位数,4byte或8byte |
uint8 | 1byte |
uint16 | 2byte |
uint32 | 4byte |
uint64 | 8byte |
uint | 根据系统位数,4byte或8byte |
byte | 1byte |
rune | 4byte |
根据以上的内存单元的规范和咱们已知的补码知识,能够获得每种类型的存储范围
在位计算中再作详细的展开。调试
go语言支持的浮点型有两种float32,float64两种数据类型,它们的算术规范由IEEE754浮点数国际标准定义。
float32在内存分配4byte用于存储,float64内存中分配8byte用于存储。那么怎么分配这些存储单元,也就是编码规范。
看下它的国际标准是怎么定义的,参考阮一峰博客code
存储的编码规范又是怎么定义的呢?
[](https://liushaobo-image-bk.os...
以上对浮点型数据的编码规范和存储作了说明。
go语言提供了复数数据类型complex64和complex128,这个在平时的代码中不多用的到,在此不作展开
在一些编程语言中,没有bool类型使用0或1来标示go语言中的bool类型占一个存储单元
那个在内存中存储的是什么样?
经过gdb调试工具,进入内存中,一探究竟。
一台标准的冯诺伊曼模型计算机,有cpu,寄存器, 内存,I/O设备组成,cpu和积存器组成了计算单元,内存是数据的存储单元,I/O设备是和做为计算机的入口和出口同外部进行交互。
数值计算的基本运算符有加,减,乘,除,模运算,在go语言中分别对应,+,-,*,/,%
在计算机内部是怎么完成运算的?该篇幅将单独做为一个专题作后文中详细展开。在此咱们只须要知道,经过计算符链接的变量最终都会被转化为cpu的逻辑运算。
上文分别介绍了内存和计算符,那么怎么将计算的结果打印出来,也就是将内存中值,经过I/O设备输出?
go语言中内置的语言包中提供了这样的函数,咱们只须要调用该函数,便可完成I/O操做。
在fmt包下有Scanln()用于输入,Println()用于输出。
以上介绍了go语言的常量及变量的声明,及基本类型的内存存储方式作了总结和实验
喜欢请关注"云端漫记", 持续为你更新