Go语言学习(4)-基本数据类型

Go语言中的数据类型包含两种:

基本数据类型(原生数据类型):整型、浮点型、布尔型、字符串、字符(byte、rune)

复合数据类型(派生数据类型):指针(pointer)、数组(array)、切片(slice)、映射(map)、函数(function)、结构体(struct)、通道(channel)

整型

整型分为两大类

按长度分:int8、int16、int32、int64、int

无符号整型:uint8、uint16、uint32、uint64、uint

其中,uint8就是byte型、int16对应C语言中的short型、int64对应C语言中的long型

还有其他数字类型

当超过数据类型所要求的长度时,就会报错:constant xxx overflows byte。

字符

下面看一下 byte 和 rune 到底是不是 我们上面描述的,分别 对应 uint8 和 int32,代码如下,我们还是打印出变量的类型 和 值:

输出结果如下:

事实证明,我们上面描述的是没有问题的。实际上,我们通常不会将 byte 和 rune 直接赋值为 数字类型,我们通常 赋值为 字符,类似于 Java 中的 char,如下:

输出结果如下:

那么,byte 和 rune 有什么区别呢?我们先来看一个例子,假设 将 上面的 f 值 赋值为 汉字 大写的 一,那么 是怎么样的结果呢,然后将 e 的 值也赋值为 “一”,结果是什么呢?

我们会发现,将 f 赋值为 “一”,输出 为:int32 19968;将 e 赋值为 “一”,会报一个异常:constant 19968 overflows byte,这是因为 byte 即 uint8 的最大值 是 255,而 “一” 对应的值 为 19968,远远大于 uint8 的最大值。

byte 和 rune 的区别如下:

byte型:其实就是 uint8 的别名,代表了一个ASCLL 码的一个字符

rune型:其实就是 int32 ,代表了一个UTF-8字符,当需要处理中文等 unicode 字符集时就要用到 rune 类型

字符串

字符串在Go语言中是以基本数据类型出现的。

在Go语言中,字符串 即可以单行定义,又可以多行定义,单行定义 不需要阐述,下面我们介绍下定义多行字符串

双引号书写字符串被称为字符串字面量,这种字面量不能跨行;

多行字符串需要使用 “·” 反引号(位于Tab键上面的一个),多用于内嵌源码 和 内嵌数据;

在反引号中的所有代码不会被编译器识别,而只是作为字符串的一部分

当我们想 将 一段代码作为 字符串输出的时候,我们 发现 要输出 就只能 调为一行,但Go语言给我们提供了 多行字符串,如下:

输出结果如下:

这样就可以讲 我们拷贝的一段代码 原样输出。

以上主要讲解了 基本数据类型,后续 会继续讲解 派生数据类型。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181126G1UTYR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券