Go基本数据类型

公子邪o · · 2365 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go语言中给我们提供的所有基本数据类型,我们应该理解如何在自己的Go程序中使用这些类型。

数据类型
Go语言将数据类型分为四类:Basic Types(基础类型)、Aggregate Types (复合类型)、Reference Types (引用类型)、Interface Types (接口类型)。

基础类型包括:数字、字符串和布尔型。布尔型的值只可以是常量 true 或者 false。数字类型支持整型和浮点型,并且支持复数,其中位的运算采用补码。

复合数据类型包括:数组、结构体是通过组合简单类型,来表达更加复杂的数据结构。

引用类型包括:指针、slice、map、 channel、接口和函数类型。当声明引用类型的变量时,创建的变量被称作标头(header)值。从技术细节上说,字符串也是一种引用类型。每个引用类型创建的标头值是包含一个指向底层数据结构的指针。每个引用类型还包含一组独特的字段,用于管理底层数据结构。因为标头值是为复制而设计的,所以永远不需要共享一个引用类型的值。标头值里包含一个指针,因此通过复制来传递一个引用类型的值的副本,本质上就是在共享底层数据结构。
integers
我们可以在程序中使用有符号或无符号整数,并可以指定所需的整数大小。我们为什么要指定您可能要求的大小,好吧,想象一下您正在尝试优化程序的内存利用率。如果您知道某个数字不会超过某个特定值,则可以选择一个适合该值的尺寸:

我们可以通过键入uintint在末尾附加int的大小来创建新的整数变量。如果我们想要一个8位无符号整数,那么它将看起来像var myint uint8这样:微信图片_20200225112719.png应该注意的是,如果您尝试为一个int分配一个比它可以处理的更大的值,即:

var myint int8
myint = 2500

Go编译器将无法运行或构建程序,并且将输出2500溢出的事实int8。但是,如果要在运行时溢出整数,则可能会开始看到奇怪的结果。例如,尝试运行此程序并检查输出:微信图片_20200225113624.png

类型转换

当涉及使用具有不同数据类型的多个变量时,您通常会不得不将各种整数变量转换为int。这将处理从uint8int16到标准32或64位有符号int的转换,从那里您将能够执行加法,乘法和减法。
微信图片_20200225114137.png

浮点数字

它们有2个不同的大小,或者为 float32float64并且使您可以处理标准int64数据类型中无法容纳的大量数据。浮点数的范围极限值可以在math包找到。常量math.MaxFloat32表示float32能表示的最大数值,大约是3.4e38;对应的math.MaxFloat64常量大约是1.8e308。它们分别能表示的最小值近似为1.4e-454.9e-324

float32 IEEE-754 32位浮点型数

float64 IEEE-754 64位浮点型数

float 转换为 int

如果要将整数转换为浮点数或将浮点数转换为int,则可以通过将变量转换为所需的数据类型来实现。

微信图片_20200225115154.png

复数
还有另一种通常被忽略的数字数据类型,即复数数据类型。这些与浮点数据类型非常相似,有两种不同的大小,您可以选择complex64complex128

complex64 32 位实数和虚数

complex128 64 位实数和虚数

布尔

让我们看看如何在我们的Go程序之一中使用它:

var amazing bool  
amazing = true  
if amazing {  
   subscribeToChannel()   
}

如果我们想在程序中做一些布尔逻辑会怎样?好了,使用||&&运算符,我们可以:
微信图片_20200225121948.png

字符串

carbon.png

常量
常量是Go语言中我们最终的基本数据类型。它们使我们可以指定在程序执行过程中不会改变的不可变值。

const meaningOfLife = 42

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:公子邪o

查看原文:Go基本数据类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2365 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传