基本数据类型
1|0一、golang之基本数据类型
- 共有6大基本数据类型
- 整型
- 浮点型
- 复数类型
- 布尔类型
- 字符串类型
- 字符相关的byte和rune类型
2|0二、整型
- 按有无符号分为两类,说白了就是有符号的包含负数、无符号不含
- 如有符号的
int8
类型范围是 (-128 到 127) 的整数,而无符号的uint8
类型范围是(0~255)的整数
2|11. 有符号(范围是负数、0和正数)
-
int8、int16、int32、int64
,后面的数字表示二进制时的长度 -
其中,
uint8
就是我们熟知的byte
型,int16
对应C语言中的short
型,int64
对应C语言中的long
型。 -
例子:
int8
范围是 (-128 到 127) 的整数,负数比正数多一个
2|22. 无符号(范围是0和正数)
-
uint8、uint16、uint32、uint64
-
例子:
uint8
范围是 (0 到 255) 的整数
2|33. 特殊整型
uint
: 32位操作系统上就是uint32
,64位操作系统上就是uint64
int
: 32位操作系统上就是int32
,64位操作系统上就是int64
uintptr
: 无符号整型,用于存放一个指针
- 注意: 在使用
int
和uint
类型时,不能假定它是32位或64位的整型,而是考虑int
和uint
可能在不同平台上的差异。
2|44. 数字字面量语法(先了解就好)
-
Go1.13版本之后引入了数字字面量语法 , 这样便于开发者以二进制、八进制或十六进制浮点数的格式定义数字 。共四种表示。
-
实例
3|0三、浮点型
-
Go语言支持两种浮点型数:
float32
和float64
-
浮点型和整型的变量直接不能直接相加,需要转换一边的格式成两边相同格式,但是在一个数字表达式中,却可以直接计算
4|0三、复数类型
- 分为
complex64
和complex128
-
complex64:实部和虚部都是 float32 类型的的复数
-
complex128:实部和虚部都是 float64 类型的的复数
-
4|11. 定义复数
4|22. 实例
5|0四、布尔类型
-
同其他语言一样,就是两个布尔值
true
和false
-
注意:
- 布尔类型变量的默认值为
false
- 语言中不允许将整型强制转换为布尔型
- 布尔型无法参与数值运算,也无法与其他类型进行转换。
- 布尔类型变量的默认值为
6|0五、字符串类型
-
Go 语言中的字符串是一个字节切片
-
Go 中的字符串是兼容 Unicode 编码的,并且使用 UTF-8 进行编码
-
字符串的值为双引号内的内容
-
关于字符串的其他的操作,见下面的第六点:字符相关的
byte
和rune
类型 -
Go 中的字符串是不可变的。一旦一个字符串被创建,那么它本身将无法被直接修改,但是可以通过其他方法修改
6|11. 常见的字符串转义符
转义符 | 解释 |
---|---|
\r |
回车符(返回首行) |
\n |
换行符(跳到下一行的同列位置) |
\t |
制表符 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
6|22. 多行字符串
-
用反引号引住即可
-
反引号间换行将被作为字符串中的换行,但是所有的转义字符均无效,文本将会原样输出。
6|33. 字符串常用的方法
(1)字符串长度
-
len
方法返回的结果是字符串的utf8的字节长度,所以在处理当需要处理中文、日文或者其他复合字符时,会出现字符长度和字符串的字符长度不等的情况 -
此时用 [utf8 package] 包中的
func RuneCountInString(s string) (n int)
方法用来获取字符串的长度 -
(2)其他字符串常用方法
方法 | 介绍 |
---|---|
len(str) |
len() 返回字符串中字节的数量 |
+或fmt.Sprintf |
拼接字符串 |
strings.Split |
分割 |
strings.contains |
判断是否包含 |
strings.HasPrefix,strings.HasSuffix |
前缀/后缀判断 |
strings.Index(),strings.LastIndex() |
子串出现的位置 |
strings.Join(a[]string, sep string) |
join操作 |
7|0六、字符相关的byte 和 rune类型
-
Go 语言的字符有两种 :即
byte 和 rune
类型 -
字符串的每个元素就叫做字符。可以通过遍历或单个获取字符串中的字符。
-
字符使用单引号包裹起来
-
实例
7|11. byte
-
byte
型是uint8
类型的别名,代表了ASCII码
的一个字符 -
Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte 型进行默认字符串处理,性能和扩展性都有照顾
7|22. rune
-
rune
是 Go 语言的内建类型,它也是 int32 的别称,代表一个UTF-8字符
(注意是字符,一个汉字、一个字母都是一个字符) -
当需要处理中文、日文或者其他复合字符时,则需要用到
rune
类型
7|33. 总结(byte和rune的对比)
-
Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte 型进行默认字符串处理,性能和扩展性都有照顾
-
实例
-
因为UTF8编码下一个中文汉字由3~4个字节组成,所以我们不能简单的按照字节去遍历一个包含中文的字符串,否则就会出现上面实例中输出中第一行的结果
-
go语言的字符串和python中的字符串类似, 底层都是一个byte数组 ,所以字符串的长度就是其二进制的长度,并且他们可以直接转换成二进制格式即
[]byte
类型。 -
**rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成 **
7|44. 遍历字符串中的单个字符
-
由于字符串是一个字节切片,所以我们可以获取字符串的每一个字节
-
有两种方法
- 一个是手动转化后遍历(不转化会有bug)
- 一个是用
for range
遍历(推荐)
(1)手动转化后遍历
-
由于go中的字符有
rune
和byte
类型两种,所以,有的字符在打印的时候会出现和我们预期的不符和 -
(2)for range 遍历
range
内部给我们做了转化,返回的是是当前rune
的字节位置- **rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成(即一个rune字符可以代表多个字节) **
7|55. 修改字符串
-
Go 中的字符串是不可变的。一旦一个字符串被创建,那么它将无法被修改
-
要修改字符串,需要先将其转换成
[]rune
切片或[]byte
切片,完成后再转换为string
。无论哪种转换,都会重新分配内存,并复制字节数组 -
实例
7|66. 构造字符串
-
两种构造方式
-
字节切片构造字符串
-
rune
切片构造字符串
-
(1)字节切片构造字符串
(2)rune切片构造字符串
8|0七、类型转换
-
Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用
-
强制类型转换的基本语法
-
强制类型转换实例
__EOF__

本文链接:https://www.cnblogs.com/Mcoming/p/11967309.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!