Go 语言编程 — 基本数据类型
目录
文章目录
- 目录
- Golang 的数据类型
- 基本数据类型
- 布尔型(Boolean)
- 数字类型(Numeric)
- 整型
- 浮点型
- 其他
- 字符串类型(String)
- 更改字符串数值
- 多行字符串
Golang 的数据类型
Golang 的数据类型通常可以区分为:
- 基本类型:Boolean,Numeric,String 类型。
- 派生类型:Array,Struct,Slice,Map,Pointer,Function,Channel,Interface 类型。可以使用 type 语句构造。可以细分为:
- Aggregate:Array,Struct。
- Reference:Slice,Map,Pointer,Function,Channel。
- Interface。
注:其中 Array,Struct 是定长的,而 Slice,Map 是变长的。
基本数据类型
布尔型(Boolean)
- True
- False
数字类型(Numeric)
整型
- int8:有符号 8 位整型,[-128, 127]
- uint8:无符号 8 位整型,[0, 255]
- int16:有符号 16 位整型,[-32768, 32767]
- uint16:无符号 16 位整型,[0, 65535]
- int32:有符号 32 位整型,[-2147483648, 2147483647]
- uint32:无符号 32 位整型,[0, 4294967295]
- int64:有符号 64 位整型,[-9223372036854775808, 9223372036854775807]
- uint64:无符号 64 位整型,[0, 18446744073709551615]
浮点型
- float32:32 位浮点型数
- float64:64 位浮点型数
- complex64:32 位实数和虚数
- complex128:64 位实数和虚数
其他
- byte:uint8 的别名
- rune:int32 的别名
- uint:32 或 64 位,取决于操作系统
- int:32 或 64 位,取决于操作系统
- uintptr:无符号整型指针
字符串类型(String)
字符串的本质是一串固定长度的字符连接起来的字符序列。区别于 C 语言中的字符串是由若干个字符组成的,而 Golang 的字符串是由若干个字节连接起来的。
Golang 的字符串的字节使用 UTF-8 编码标识 Unicode 文本。字符串数据类型的定义很简单,使用双引号 “ " ” 或者反引号 “ ` ”来创建。区别在于:双引号之间的转义符会被转义,而反引号之间的字符保持不变。
另外,Golang 与 C 语言一样,单引号 “ ’ ” 用于标识一个字符。可以使用 string(char)
将一个字符转换成一个包含了单个字符的字符串。
var c = 'c'
示例:
package mainimport "fmt"func main() {var a string = "hello \n world"var b string = `hello \n world`fmt.Println(a)fmt.Println(b)
}
结果:
hello world
hello \n world
更改字符串数值
注意,因为 Golang 中的字符串本质是由若干个(已编码)的字节组成的。所以,数据类型可以看作是一个常量类型,一旦赋值了就不能再修改。
var s = "hello world"
s[0] = 'c' // 报错
如果实在需要修改字符串,则应该这么做:
func main() {var s1 string = "hello"c := []rune(s1) // 将 s1 转换为 rune 数组。c[0] = 'c' // 修改数组的第一个元数。var s2 string = string(c) // 创建新的字符串 s2,强制类型转换 c 数值。fmt.Println("%s \n", s2)
}
rune() 函数是 int32 的别名,用 UTF-8 进行编码。当我们需要遍历字符串的字符时,可以用于混换每个字节。
简而言之,为了获得字符串每个实际的字符,需要使用 rune 类型:
var s = "你好"
fmt.Println(len(s))
c := []rune(s)
fmt.Println(len(c),c)
结果:
6
2 [20320 22909]
多行字符串
当需要书写多行字符串时候需要注意,因为 Golang 会在每行的行末自动添加分号,所以字符串连接符 “+” 一定要放在换行的行末:
// 正确
s := "Starting part" +"Ending part"// 错误
s := "Starting part"+ "Ending part"
也可以考虑使用反引号,但此时 s 中也包含了换行符,因为反引号中间的字符会保持不变。所以通常用在多行打印的情况:
package mainimport "fmt"func main() {s := `Starting partEnding part`fmt.Println(s)
}
输出:
Starting partEnding part
Go 语言编程 — 基本数据类型相关推荐
- C 语言编程 — 高级数据类型 — void 类型
目录 文章目录 目录 前文列表 void 类型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> & ...
- C 语言编程 — 高级数据类型 — 字符串
目录 文章目录 目录 前文列表 字符串 字符串拷贝 字符串比较 strcmp strncmp 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> &l ...
- C 语言编程 — 高级数据类型 — 共用体
目录 文章目录 目录 前文列表 共用体 定义共用体 访问共用体成员 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本 ...
- C 语言编程 — 高级数据类型 — 结构体与位域
目录 文章目录 目录 前文列表 结构体 定义结构体 初始化结构体变量 访问结构体成员 结构体的内存分布 将结构体作为实参传入函数 指向结构体变量的指针 位域 定义位域 使用位域结构体的成员 前文列表 ...
- C 语言编程 — 高级数据类型 — 枚举
目录 文章目录 目录 前文列表 声明枚举类型 定义枚举类型的变量 枚举类型变量的枚举值 枚举在 switch 语句中的使用 将整型转换为枚举类型 前文列表 <程序编译流程与 GCC 编译器> ...
- C 语言编程 — 高级数据类型 — 数组
目录 文章目录 目录 前文列表 数组 声明数组 初始化数据 访问数组元素 二维数组 指向数组的指针 将数组指针作为实参传入函数 从函数返回一个数组指针 指针数组 数组名和取数组首地址的区别 前文列表 ...
- C 语言编程 — 高级数据类型 — 指针
目录 文章目录 目录 前文列表 指针 声明一个指针变量 使用指针 空指针 悬空指针 野指针 指针的算术运算 指向指针的指针 将指针作为实际参数传入函数 从函数返回指针 一个古老的笑话 前文列表 < ...
- Go 语言编程 — 高级数据类型 — 结构体
目录 文章目录 目录 结构体 访问结构体成员 向函数传递结构体 结构体指针 结构体标签(Struct Tag) 结构体 Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.与 ...
- C 语言编程 — 基本数据类型
目录 文章目录 目录 前文列表 数据类型 基本数据类型 整型 浮点型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> 数据类型 数据类型,即数据对 ...
- Go 语言编程 — 高级数据类型 — Interface、多态、Duck Typing 与泛式编程
目录 文章目录 目录 Golang 的接口 Interface 实例存储的是实现者的值 如何判断某个 Interface 实例的实际类型 Empty Interface Interface 与多态 I ...
最新文章
- [UI自动化]:控制浏览器操作
- ASP.NET Core MVC – Caching Tag Helpers
- 【Android APT】编译时技术 ( ButterKnife 原理分析 )
- python正则匹配数字_python 正则匹配字母数字中的任意数字,字母
- 旅行商问题c语言,【算法作业】用回溯法求解旅行商问题
- 外网利用POP3,SMTP访问内网Exchange!!!
- qt截图怎样实现橡皮擦_利用QT实现截屏的四种方法
- python第四章单元测试_MOOC选修课答案第四章单元测试答案_Sar编程基础期末答案...
- 房间计费系统改造E-R图纸设计
- pycharm 2018.1 专业版激活 亲测可用!!!
- 简析Windows Linux的内核映射
- 黑马程序员传智播客 正则表达式学习笔记 匹配单个字符多个字符
- linux里面rpm是什么文件,linux中deb格式和rpm格式分别是什么?
- 400错误,The server cannot or will not process the request due to something that is perceived to be a c
- 针对中亚地区政府部门的攻击:通过Office漏洞传播新型Hawkball后门
- (转) 如何在Excel和Word文档中插入GIF动画
- 教你如何做好微信营销说到微信营销
- 简易的共享交通系统管理系统
- 西北工业大学noj数据结构表达式括号匹配(严3.19)
- 模拟电路学习常用原件之电阻的作用和仿真
热门文章
- 通过因特网连接Beaglebone Black
- c ef框架-mysql_.net EF框架 MySql實現實例
- 450g吐司烘烤温度_教你一手如何判断吐司面包是否烤熟
- android handler的机制和原理_一文搞懂handler:彻底明白Android消息机制的原理及源码
- 安卓samba软件_Android Samba Client
- android+壁纸拉伸,Launcher3自定义壁纸旋转后拉伸无法恢复
- python 如何判断一个函数执行完成_Python核心编程的四大神兽迭代器、生成器 、闭包以及装饰器...
- java邮件附件默认路径_JavaMail - 文件夹管理( Folder Management)
- 运动想象脑机接口中迁移学习的完整流程
- mysql判断视图是否存在_使用JDBC查询是否存在某表或视图,按月动态生成表