专栏首页云端漫步​go语言数值类型及布尔类型
原创

​go语言数值类型及布尔类型

常量

常量声明

常量是程序在编译时就确定的值,程序在执行时不能修改常量的值。声明常量使用关键字const。在声明常量时,需要对常量赋值。

const 名称 类型 = 值 或

const 名称 = 值 自动做类型推断

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

在基本类型中,变量的声明和初始化实际上是一步,这里之所以分开阐述是为了说明实际上这是两步操作

变量赋值

在声明了变量后,就可以修改变量的值

变量的赋值很简单,使用=进行赋

注意

已经声明了的变量不能对其再次声明

如:

var aa int = 8

var aa int8

整型

当我们要把一个值变成计算机可以识别的处理,需要确定两点

存储的编码方式

存储的长度

对于整型数据,在计算机内部是以补码的方式,存储长度,go语言的提供的多种长度不同的整型数据类型。如下:

类型 长度

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用于存储。那么怎么分配这些存储单元,也就是编码规范。

看下它的国际标准是怎么定义的,参考阮一峰博客

存储的编码规范又是怎么定义的呢?

以上对浮点型数据的编码规范和存储做了说明。

复数型

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语言的常量及变量的声明,及基本类型的内存存储方式做了总结和实验

喜欢请关注微信公众号"云端漫记", 持续为你更新

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • go语言数值类型及布尔类型

    常量声明常量是程序在编译时就确定的值,程序在执行时不能修改常量的值。声明常量使用关键字const。在声明常量时,需要对常量赋值。const 名称 类型 = 值 ...

    暮雨
  • 1108. IP 地址无效化

    给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。

    暮雨
  • go语言程序调试

    调试程序是程序猿的一项必备技能,有多种手段来调试程序,如打印控制台输出,查看日志,以及设置断点,使用debug做单步跟踪进去调试。这篇文章主要从go使用debu...

    暮雨
  • notepad++ 添加JSON格式化插件

    Notepad++ 是Windows下一款非常好用的免费多语言代码编辑器,可以通过添加JSON格式化插件,更方便的协助我们将JSON数据格式化为观看更直观友好的...

    大大大黑白格子
  • 流媒体开发中H264编码NALU结构介绍与I帧判断方法

    H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像...

    EasyNVR
  • Github 项目推荐 | 用 TensorFlow 实现基于 GAN 的极限图像压缩框架

    本库是用 TensorFlow 实现的基于 GAN 的极限图像压缩框架。该方法由 Agustsson 等人开发,该方法非常有趣,详细信息请查阅论文:

    AI研习社
  • 2.8折数据库,开抢!

    9:00-11:00,11:00-14:00 16:00-19:00 每天3场秒杀,云数据库抄底价!

    腾讯云数据库 TencentDB
  • Windows 实用技巧汇总

    图上的这条右键命令一般在 Win7 下是需要 Shift + 右键在弹出菜单里才能看到的,怎么省掉这个 Shift,直接就能出来呢?

    mzlogin
  • Druid 0.17入门(4)—— 数据查询方式大全

    具体查看 https://druid.apache.org/libraries.html

    用户6070864
  • Druid 0.17入门(4)—— 数据查询方式大全

    具体查看 https://druid.apache.org/libraries.html

    实时计算

扫码关注云+社区

领取腾讯云代金券