🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
Go 语言数据类型
一、基本类型(基础数据类型)
1. 布尔类型 (bool)
2. 整数类型
3. 浮点类型
4. 复数类型
5. 字符与字符串
二、复合类型(派生类型)
三、Go 数据类型特点
四、类型转换
五、总结
Go 语言数据类型
Go 语言是一种静态强类型语言,所有变量在编译时必须明确其数据类型,且类型一旦确定便不可更改。Go 的数据类型体系清晰,可分为四大类:基本类型、复合类型、引用类型和接口类型。
一、基本类型(基础数据类型)
1. 布尔类型 (bool)
- 只能是
true或false - 零值为
false - 不能与整数直接比较(如
if flag == 1是非法的) - 示例:
var flag bool = true
2. 整数类型
| 类型 | 字节大小 | 有符号范围 | 无符号范围 | 说明 |
|---|---|---|---|---|
| int | 平台相关 | 32/64位 | 32/64位 | 通用整型,优先用明确位数类型 |
| int8 | 1字节 | -128 ~ 127 | - | 8位有符号整数 |
| int16 | 2字节 | -32768 ~ 32767 | - | 16位有符号整数 |
| int32 | 4字节 | -2147483648 ~ 2147483647 | - | 32位有符号整数(rune别名) |
| int64 | 8字节 | -9223372036854775808 ~ 9223372036854775807 | - | 64位有符号整数 |
| uint | 平台相关 | - | 32/64位 | 通用无符号整型 |
| uint8 | 1字节 | - | 0 ~ 255 | 8位无符号整数(byte别名) |
| uint16 | 2字节 | - | 0 ~ 65535 | 16位无符号整数 |
| uint32 | 4字节 | - | 0 ~ 4294967295 | 32位无符号整数 |
| uint64 | 8字节 | - | 0 ~ 18446744073709551615 | 64位无符号整数 |
| uintptr | 平台相关 | - | 与平台指针位数一致 | 用于存储指针地址 |
特殊说明:
byte是uint8的别名,常用于处理二进制数据rune是int32的别名,用于表示 Unicode 字符- 推荐使用明确位数的类型(如
int32而非int)以避免跨平台问题
3. 浮点类型
| 类型 | 精度 | 范围(约) | 说明 |
|---|---|---|---|
| float32 | 6-7位小数 | ±3.4×10³⁸ | 32位浮点数 |
| float64 | 15-17位小数 | ±1.8×10³⁰⁸ | 64位浮点数(默认浮点类型) |
注意:浮点数存在精度误差,计算时需谨慎。
4. 复数类型
| 类型 | 实部/虚部类型 | 示例 |
|---|---|---|
| complex64 | float32 | 3.0 + 4.0i |
| complex128 | float64 | 1.5 + 2.5i |
5. 字符与字符串
字符串 (string):
- UTF-8编码的不可变字节序列
- 不可变:字符串一旦创建,内容不能修改
- 示例:
var name string = "Golang" - 字符串拼接:
s := s1 + " " + s2 - 多行字符串:
msg :=这是多行文本``
字符:
- Go 没有独立的
char类型 - 字符使用
rune表示(实际上是int32) - 示例:
var ch rune = '中' byte是uint8的别名,用于表示 ASCII 字符
- Go 没有独立的
二、复合类型(派生类型)
| 类型 | 说明 | 示例 |
|---|---|---|
| 数组 (Array) | 固定长度、相同类型元素序列 | var a [3]int = [3]int{1,2,3} |
| 切片 (Slice) | 动态长度、数组片段引用 | s := []int{1,2,3} |
| 结构体 (Struct) | 自定义数据类型,组合不同类型数据 | type Person struct {Name string; Age int} |
| 映射 (Map) | 键值对集合 | m := map[string]int{"a":1} |
| 接口 (Interface) | 定义方法集合,实现多态 | interface{} (空接口) |
| 指针 (Pointer) | 存储变量内存地址 | var p *int |
三、Go 数据类型特点
- 静态类型:编译时确定变量类型,运行时不能改变
- 强类型:类型不会自动转换,必须显式转换
- 示例:
var b float64 = float64(a)
- 示例:
- 零值机制:未初始化变量有明确默认值
- 整数:0
- 布尔:false
- 字符串:空字符串
- 指针:nil
- 作用域清晰:通过代码块控制作用域,通过首字母大小写控制跨包访问
四、类型转换
Go 不支持隐式类型转换,必须显式转换:
var a int = 100 var b float64 = float64(a) // 显式转换 // 字符串与数值转换 var c string = strconv.Itoa(a) // int -> string var d int = strconv.Atoi("123") // string -> int五、总结
Go 语言的数据类型体系清晰,适合高效、安全的编程。在实际开发中:
- 优先使用
int,float64,string,bool等默认类型 - 处理字符时使用
rune而非byte - 字符串是不可变类型,处理时需注意
- 类型之间必须显式转换
- 选择合适的整数类型以避免跨平台问题
理解这些数据类型是编写规范、高效 Go 代码的基础。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙