go学习(十三)数据类型


1、go数据类型

(1)所有数据类型

布尔型
  布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
数字类型(数值类型):整型,浮点型,其他类型
  整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,复数是浮点型,其中位的运算采用补码。
字符串类型
  字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
派生类型
  (a) 指针类型(Pointer)
  (b) 数组类型
  (c) 结构化类型(struct)
  (d) Channel类型
  (e) 函数类型
  (f) 切片类型
  (g) 接口类型(interface)
  (h) Map 类型

(2)数值类型(数字类型)

整型:有符号整数类型(int8,int16,int32,int64,int),无符号整数类型(uint8,uint16,uint32,uint64,unit,uintptr),基于架构的类型(int,uint,uintptr)

    int和uint:这两种类型大小相同,32或64bit。对应特定CPU平台机器字大小,不同编译器即使在相同的硬件平台上可能产生不同的大小。
    rune:和int32等价,可互换。Unicode字符rune类型表示一个Unicode码点。
    byte:和uint8等价,可互换。byte类型一般用于强调数值是一个原始的数据而不是一个小的整数。
    uintptr:还有一种无符号的整数类型uintptr,没有指定具体的bit大小但是足以容纳指针。uintptr类型只有在底层编程时才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。我们将在第十三章的unsafe包相关部分看到类似的例子。

浮点型:float32(IEEE-754 32位浮点型数),float64(IEEE-754 64位浮点型数),complex64(32 位实数和虚数),complex128(64 位实数和虚数)
浮点数=符号位+指数位+尾数位

    CPU无关:它们的算术规范由IEEE754浮点数国际标准定义,该浮点数规范`被所有现代的CPU支持`。
    十进制精度:一个float32类型的浮点数可以提供大约`6个十进制数`的精度,而float64则可以提供约`15个十进制数`的精度    
    优先使用float64:保证精度同时科学计算函数math会需要这个精度。

其他数字类型:byte(类似 uint8),rune(类似 int32),uint(32 或 64 位),int(与 uint 一样大小),uintptr(无符号整型,用于存放一个指针)

(3)go没有char类型!

golang没有专门的char类型,一般用单个byte保存单个字母字符
参考:https://blog.csdn.net/qq_39683463/article/details/88557430

(4)go只能显式类型转换

Golang是强类型语言,不支持隐形类型转换
int、uint和uintptr是不同类型的兄弟类型,不管它们的具体大小。其中int和int32也是不同的类型,即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式的类型转换操作,反之亦然。

参考:
https://www.runoob.com/go/go-data-types.html【菜鸟,标准清晰】