GO语言-06数据类型

初心是记录和总结,自己学习Go语言的历程。如果能帮助到你,这是我的荣幸。

前言

Go语言的数据类是:值类型派生类型

从常规来说,一般编程语言的数据都可以分成两种类型:

  • 基本数据类型
  • 引用数据类型

其中基本数据类型,是指不需要从内存中开辟空间,因为内存大小已经固定,定义后可以直接赋值进行初始化使用;而引用数据类型是内存大小不确定,需要从内存中开辟空间后才能进行赋值和其他操作。介绍这个只是帮助我们去了解Go语言的类型。

Go语言的值类型就好比基本数据类型,定义后直接赋值;但Go语言的派生类型不能用引用类型一概而论了

值类型

Go语言有如下常用的值类型

类型长度(字节)默认值说明
bool1false布尔
byte10uint8
rune40Unicode Code Point, int32
int, uint4或80整型;32 或 64 位
float3240.0
float6480.0
array数组
string“”UTF-8 字符串

派生类型

我想Go语言这样划分类型,可能是这样想的:简单的类型-值类型复杂的类型-派生类型,我们依然带着有些类型是需要开辟内存的思想,再给派生类型分一下,方便记忆

  • 引用类型:slicemapchan
  • 接口:interface
  • 函数:func
  • 指针
  • 结构体

这里我们先知道在Go语言中是有这样一些派生类的存在,在这并不展开详细介绍。

开辟空间方式

学过面向对象思想的,我们应该懂得通过new关键字在内存开辟空间给指定类型。虽然Go语言并不是面向对象的语言,但是Go语言为我们提供了两种内存分配的方式:

  • new:func new(Type) *Type
  • make:func make(t Type, size ...IntegerType) Type

通过定义,可以了解到new比较容易理解:给定一个类型,返回的是指向该类型的指针。而make我们通过官方包介绍来看一下:

在这里插入图片描述

解读:

我们再次摘录下它的函数定义,方便我们理解:
func make(t Type, size ...IntegerType) Type

首先,make函数是专门为了给slicemapchan这三种类型分配内存并初始化。函数的参数:

  • t Type表示类型
  • size表示长度
  • ...IntegerType表示容量

例如:

make([]int, 0, 10) // 大小为10,并返回一个长度为0、容量为10的切片
make(map[string]int, 8) // 分配容量为8的,存放key为string类型的,value为int类型的map
make(chan int, 8) //缓存区大小为8,传递整型的通道

我们有提到make可以初始化。所以,通过make函数创建的类型已经自动帮我们初始化了。

顺便提一嘴,在Go语言中空表示为nil,所以slicemapchan默认定义后未分配内存时都是为nil,对nil操作的时候会报错。这就体现出make的好处来了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值