Go基本数据类型

Go语言中给我们提供的所有基本数据类型 , 我们应该理解如何在自己的Go程序中使用这些类型 。
数据类型
Go语言将数据类型分为四类:Basic Types(基础类型)、Aggregate Types (复合类型)、Reference Types (引用类型)、Interface Types (接口类型) 。
基础类型包括:数字、字符串和布尔型 。 布尔型的值只可以是常量 true 或者 false 。 数字类型支持整型和浮点型 , 并且支持复数 , 其中位的运算采用补码 。
复合数据类型包括:数组、结构体是通过组合简单类型 , 来表达更加复杂的数据结构 。
引用类型包括:指针、slice、map、 channel、接口和函数类型 。 当声明引用类型的变量时 , 创建的变量被称作标头(header)值 。 从技术细节上说 , 字符串也是一种引用类型 。 每个引用类型创建的标头值是包含一个指向底层数据结构的指针 。 每个引用类型还包含一组独特的字段 , 用于管理底层数据结构 。 因为标头值是为复制而设计的 , 所以永远不需要共享一个引用类型的值 。 标头值里包含一个指针 , 因此通过复制来传递一个引用类型的值的副本 , 本质上就是在共享底层数据结构 。
integers
我们可以在程序中使用有符号或无符号整数 , 并可以指定所需的整数大小 。 我们为什么要指定您可能要求的大小 , 好吧 , 想象一下您正在尝试优化程序的内存利用率 。 如果您知道某个数字不会超过某个特定值 , 则可以选择一个适合该值的尺寸:
我们可以通过键入 uint 或 int 在末尾附加int的大小来创建新的整数变量 。 如果我们想要一个8位无符号整数 , 那么它将看起来像 var myint uint8 这样:
Go基本数据类型文章插图
应该注意的是 , 如果您尝试为一个int分配一个比它可以处理的更大的值 , 即:
var myint int8
myint = 2500
Go编译器将无法运行或构建程序 , 并且将输出2500溢出的事实 int8。 但是 , 如果要在运行时溢出整数 , 则可能会开始看到奇怪的结果 。 例如 , 尝试运行此程序并检查输出:
Go基本数据类型文章插图
类型转换当涉及使用具有不同数据类型的多个变量时 , 您通常会不得不将各种整数变量转换为 int。 这将处理从 uint8 和 int16 到标准32或64位有符号int的转换 , 从那里您将能够执行加法 , 乘法和减法 。
Go基本数据类型文章插图
浮点数字它们有2个不同的大小 , 或者为 float32,float64 并且使您可以处理标准 int64 数据类型中无法容纳的大量数据 。 浮点数的范围极限值可以在math包找到 。 常量 math.MaxFloat32 表示 float32 能表示的最大数值 , 大约是 3.4e38 ;对应的 math.MaxFloat64 常量大约是 1.8e308。 它们分别能表示的最小值近似为 1.4e-45 和 4.9e-324。
float32 IEEE-754 32位浮点型数
float64 IEEE-754 64位浮点型数
float 转换为 int如果要将整数转换为浮点数或将浮点数转换为int , 则可以通过将变量转换为所需的数据类型来实现 。
Go基本数据类型文章插图
复数
还有另一种通常被忽略的数字数据类型 , 即复数数据类型 。 这些与浮点数据类型非常相似 , 有两种不同的大小 , 您可以选择 complex64 或 complex128。
complex64 32 位实数和虚数
complex128 64 位实数和虚数
布尔让我们看看如何在我们的Go程序之一中使用它:
var amazing boolamazing = trueif amazing {subscribeToChannel()}如果我们想在程序中做一些布尔逻辑会怎样?好了 , 使用 || 和 && 运算符 , 我们可以:
Go基本数据类型文章插图
字符串
Go基本数据类型文章插图
常量
常量是Go语言中我们最终的基本数据类型 。 它们使我们可以指定在程序执行过程中不会改变的不可变值 。
【Go基本数据类型】const meaningOfLife = 42