定义一个新的无符号8位整型的数据类型?_Go语言基础知识(二):数据类型

本文介绍了Go语言中的数据类型,包括布尔型、数字型(如uint8、int8等)、字符串型以及派生类型如指针、数组、切片、结构体和Map。Go的数据类型更为丰富且严谨,对于数字型,Go强制指定浮点数的位数。文章还提及了数组、切片和结构体的特点,并预告了将对Channel等复杂类型进行深入探讨。
数据类型是为了在日常使用中,根据实际需要把数据分成不同类型和不同的内存大小,从而在服务器内存申请指定空间,充分利用内存。Go的常用数据类型主要有:布尔型,数字型,字符串型和派生类型。其中前三个类型有编程基础的朋友应该都不陌生,派生类型其实也就是一些常用数组和对象类型,还有其他一些略复杂些的类型。下面具体介绍下Go中数据类型1,布尔型
只有两个值:true,false,判断真假性2,数字型
Go支持整数int型,和浮点数float32,float64,这里相比较PHP中的浮点数,Go必须声明是32位还是64,负责会报错。常用的数字型有:
(1),uint8,无符号8位整型(0 ~ 255),默认的int定义其实就是uint8
(2),int8,有符号8位整型(-128 ~ 127)
(3),uint16,无符号16位整型(0-65535)
(4),int16,有符号16位整型(-32768 到 32767)
(5),uint32、uint64 和 int32、int64
(6),float32、float64,浮点型数字3,字符串型
字符串是一串固定长度的字符挨个拼接起来的一个数据体。
eg:"hello,wolrd!"4,派生类型
派生主要包含Go中的一些复杂类型,主要有:(1),指针类型 Pointer
        我们知道变量其实是一种使用方便的占位符,引用计算机中的内存地址。指针其实也就是把某个变量指向到特定内存地址,类似于Linux中的软链概念。不用单独开辟出一块内存用于存储,而是把新变量的实际内存指向到已占有内存空间的现变量中。Go语言中取变量地址符用 &,声明一个指针类型用 *,比如声明一个int型的指针类型
var n int = 9 //定义一个int型变量nvar np *int  //定义一个int指针变量 npnp = &n  //赋值指针变量的存储地址,把n的内存地址赋值给npfmt.Printf("np的值为%d", *np) //最后输出为 np的值为9,因为np是指针变量,故需要用*号指明
(2),数组类型
        Go中的数组类型是一个固定长度大小的某一类型数值集合,在内存中是一段连续的地址空间。这点跟PHP有些不同,PHP数组长度是可动态变化大小。用代码实例表示:
var nlist = [3]int {1,2,3} //定义一个长度为3,类型为int的数组var nlist2 [2]int  //声明一个长度为2,类型为int的数组nlist2[0] = 91 //给这个数组赋值nlist2[0] = 92 //给这个数组赋值
(3),切片类型
        切片实际是为了方便数组的使用,因为数组是长度固定的,某些特殊场景时会不太方便,因此衍生出了切片的概念。切片相比较数组,长度是一个不固定的,可以追加元素,可能会是切片容量变大。
        定义切片方式跟数组类似:var varname []vartype
        也可以这么创建:var varname []type = make([]type, len)
        简化写法:varname := make([]type, len)
        切片的标准格式是:make([]type, length, capacity),其中length是切片的长度,capacity是切片的容量。另外切片还支持一些系统函数,len()获取长度,cap()获取容量,append()追加元素,copy()复制切片
q := []int {1,2,3} //定义长度为3的int切片p := make([]int, 3, 5) //定义长度为3,容量为5的切片arr := [5]int {6,7,8,9,0} //定义长度为5的数组s := arr[1:3] //截取arr数组中从下标1开始,截止到2(但不包含)的元素集合,这里s就等于 7,8a := arr[1:] //截取下标1到末尾b := arr[:4] //截取从开始到下标为4的元素集合c := arr[:] //返回arr整个元素结合append(arr,4,5) //给数组arr追加元素4,5
(4),结构体类型
     结构体就类似于PHP当中的对象类型,也可以是PHP数组。因为PHP下标和var值不区分int还是string。结构体是可以把相同类型或不同类型的数据聚合起来使用(5),Map类型
    Map是一个无序的键值对kv的组合。其中key就类似于索引,快速定位到val数据,因为Map是使用hash表来实现的 (6),Channel类型    Channel是Go中的一个核心类型,类似于管道。结构体,Map,Channel都是Go语言中的重要类型,也稍微复杂,知识点相对多一些,后面会单独开篇文章介绍下。总体来看,Go中的数据类型相比较PHP来看,提供的类型稍微会多一些,也更严谨一些。至此,加油!a1f404a52c9a652daa575cdabb4252d1.png
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值