go语言中数据类型

在这里插入图片描述

整型

整型数据分为两类,有符号和无符号两种类型

有符号: int, int8, int16, int32, int64

无符号: uint, uint8, uint16, uint32, uint64, byte(byte与uint8类似,一般用来存储单个字符)

fmt.Printf("%T", var_name)   //输出变量类型

unsafe.Sizeof(var_name)   //查看变量占用字节

浮点型

浮点型也就是小数类型,可以存放小数。比如6.6,-12.34.
golang的浮点型默认为float64类型,因为它比float32更精确

字符串

字符:Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
字符串:一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本
(1)字符串一旦赋值了,就不能修改了:在Go中字符串是不可变的。
(2)字符串的两种标识形式

双引号,会识别转义字符

var str = "abc\nabc" //输出时会换行

反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果

var str string = `abc\nabc` //输出时原样输出,不会转义	

布尔型

布尔类型也叫做bool类型,bool类型数据只允许取值true或false, bool类型占1个字节

指针

在上一篇博客中有介绍

结构体

在这里插入图片描述
执行上面代码,系统会分配两块内存,分别储存两个数据;这个时候输出一下p,结果就是:{10 20}

数组

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

数组的声明语法如下:

var 数组变量名 [元素数量]Type

在这里插入图片描述
输出结果: [0 0 0 0]

切片

切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。

切片的定义跟数组很类似,区别就是不需要指定长度,如下:

var a []int   // var 切片名 []切片值的类型

channel

goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine 奉行通过通信来共享内存,而不是共享内存来通信。

引⽤类型 channel 是 CSP 模式的具体实现,用于多个 goroutine 通讯。其内部实现了同步,确保并发安全。

定义一个channel时,也需要定义发送到channel的值的类型。channel可以使用内置的make()函数来创建:

make(chan Type) //等价于make(chan Type, 0)
make(chan Type, capacity)  //当 capacity= 0 时,channel 是无缓冲阻塞
读写的,当capacity> 0 时,channel 有缓冲、是非阻塞的,直到写满 capacity
个元素才阻塞写入。

channel通过操作符<-来接收和发送数据,发送和接收数据语法:

channel <- value      //发送value到channel
 <-channel             //接收并将其丢弃
x := <-channel        //从channel中接收数据,并赋值给x
x, ok := <-channel    //功能同上,同时检查通道是否已关闭或者是否为空
发布了41 篇原创文章 · 获赞 8 · 访问量 1948

猜你喜欢

转载自blog.csdn.net/big_white_py/article/details/103774212