当前位置:主页 > 查看内容

从零学 Go:原生数据类型

发布时间:2021-06-17 00:00| 位朋友查看

简介:前面一篇文章介绍了 Go 基本语法 变量的声明与初始化。本文将会具体介绍 Go 原生数据类型。Go 语言中具备丰富的数据类型 基本类型有整型、浮点数、布尔型、字符串型等 除此之外 还有切片、结构体、指针、通道、map、数组等其他类型。 原生数据类型 本文中我……

前面一篇文章介绍了 Go 基本语法 变量的声明与初始化。本文将会具体介绍 Go 原生数据类型。Go 语言中具备丰富的数据类型 基本类型有整型、浮点数、布尔型、字符串型等 除此之外 还有切片、结构体、指针、通道、map、数组等其他类型。

原生数据类型

本文中我们主要介绍 Golang 的基础类型。 整型中主要有两大类 分别是

按照整型的长度划分 int8、int16、int32、int64按照有无符号划分 uint8、uint16、uint32、uint64

除此之外 Golang 中还提供了平台自匹配长度的 int 和 uint 类型。 整型类型之间可以相互转换 高长度类型向低长度类型转换会发生长度截取 仅会保留高长度类型的低位值 造成转换错误 实际使用需要注意。如下例子所示

var e uint16 math.MaxUint8 1
fmt.Printf( e valud(unit16) is %v\n , e)
var d uint8(e)
fmt.Printf( d valud(unit8) is %v\n , d)

输出如下所示

e valud(unit16) is 256
d valud(unit8) is 0

因为 256 在 uint16 底层的存储方式为 00000001 00000000 转换为 uint8 之后 只截取后 8 位 导致 d 变为 00000000 即 0。

浮点型主要有两种

float32 最大范围位为 3.40282346638528859811704183484516925440e 38float64 最大范围为 1.797693134862315708145274237317043567981e 308

打印浮点型精度与 C 语言一致 可以配合 %f 使用 如下例子所示

fmt.Printf( %f\n , math.E) //按照默认宽度和精度输出
fmt.Printf( %.2f\n , math.E) //按照默认宽度和 2 位精度输出

float32 和 float64 之间也可以进行类型转换 仍然需要注意转换期间精度的损失。

Golang 的布尔型即我们常见的 true 和 fasle。与 C 语言不同 Golang 的布尔型不可与整型进行强转 也无法参与数值运算。

在 Golang 中 字符串型以原生数据类型出现 地位等价于其他的基本类型(整型、布尔型等) 它基于 UTF-8 编码实现 所以在遍历字符串型时 我们需要区分 byte 和 rune。

f : Golang 编程 
fmt.Printf( byte len of f is %v\n , len(f))
fmt.Printf( rune len of f is %v\n , utf8.RuneCountInString(f))

上述例子的输出为

byte len of f is 12
rune len of f is 8

第一种方式 统计的是 byte 的长度 它的类型为 uint8 代表了一个 ASCII 字符。第二种方式统计的是 rune 类型 它的类型为 int32 代表了一个 UTF-8 字符 它可以类比为 Java 中的 char 类型。由于中文字符在 UTF-8 中占用了 3 个字节 所以使用 len 方法时获得的中文字符的长度为 6 个 byte 而 utf8.RuneCountInString() 方法统计的是字符串的 Unicode 字符数量。

在遍历字符串的每个字节时 我们可以采用以下手段

f : Golang 编程 
//按字节遍历字符串
for _, g : range []byte(f){
 fmt.Printf( %c , g)
}

输出的结果为

Golang????¨

在进行字节遍历时候 因为中文字符的 Unicode 字符会被截断 导致中文字符输出乱码。为了保证每个字符正常输出 可以通过遍历 rune 的方式遍历字符串中的每个字符 如下所示

//按字符遍历字符串
for _, h : range f{
 fmt.Printf( %c , h)
}

此时输出的结果就是我们期望的 Golang 编程 字符串。

小结

本文主要介绍了 Go 语言的几种常用的数据类型 对于学习一门语言来说 数据类型是非常基于且必须要会的内容。特别是常用的整型、浮点数、布尔型、字符串型等。下面的文章 我们将介绍指针在 go 语言中的使用。


阅读最新文章 关注公众号 aoho求索



本文转自网络,原文链接:https://developer.aliyun.com/article/784769
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐