Go 学习笔记(3):基本类型
字符串
多行字符串
Go语言中要定义一个多行字符串时,就必须使用反引号
字符:
go
lineString := `第一行
第二行
第三行`
fmt.Println(lineString)
字符串常用操作
方法 | 描述 |
---|---|
len() | 获取字符串长度 |
+ 或 fmt.Sprintf() | 字符串拼接 |
切片 | 使用切片获取字符串的部分内容 |
== 或 strings.EqualFold() | 字符串比较(大小写敏感或忽略大小写) |
strings.Contains() | 判断字符串是否包含子串 |
strings.Index() | 查找子串在字符串中的索引位置 |
strings.Replace() | 替换字符串中的子串 |
strings.Split() | 分割字符串 |
strconv.Atoi() | 将字符串转换为整数 |
strconv.Itoa() | 将整数转换为字符串 |
strings.Trim() | 删除字符串首尾空白字符 |
strings.ToLower() | 将字符串转换为小写 |
strings.ToUpper() | 将字符串转换为大写 |
byte 和 rune 类型
组成每个字符串的元素叫做“字符”,可以通过遍历或者单个获取字符串元素获得字符。 字符用单引号 '
包裹起来,如:
go
package main
import "fmt"
func main() {
var a = 'a'
var b = '我'
fmt.Println(a, b) // 97 25105
}
byte
类型代表了 ASCII 码的一个字符,rune
类型,代表一个 UTF-8 字符。
当需要处理中文、日文或者其他复合字符时,则需要用到 rune
类型。rune
类型实际是一个int32。
Go 使用了特殊的 rune
类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte
类型进行默认字符串处理,性能和扩展性都有照顾。
go
// 遍历字符串
func traversalString() {
s := "abc.xyz调试"
for i := 0; i < len(s); i++ { // byte
fmt.Printf("%v(%c) ", s[i], s[i])
}
fmt.Println()
for _, r := range s { // rune
fmt.Printf("%v(%c) ", r, r)
}
fmt.Println()
}
输出结果:
sh
97(a) 98(b) 99(c) 46(.) 120(x) 121(y) 122(z) 232(è) 176(°) 131(�) 232(è) 175(¯) 149(�)
97(a) 98(b) 99(c) 46(.) 120(x) 121(y) 122(z) 35843(调) 35797(试)
也就是说在处理字符串的长度和遍历字符串的字符的时候需要注意,你到底是在处理 byte
类型还是在处理rune
类型。
基本类型总结
Go 语言具有丰富的基本数据类型,以下是 Go 的基本类型:
整数类型(int):
int
表示有符号整数,其大小取决于运行环境。在 32 位系统上是 32 位,在 64 位系统上是 64 位。int8
,int16
,int32
,int64
表示有符号整数的不同位数。uint
表示无符号整数,同样其大小取决于运行环境。uint8
,uint16
,uint32
,uint64
表示无符号整数的不同位数。
浮点数类型(float):
float32
和float64
表示浮点数,分别占用 32 位和 64 位存储空间。
复数类型(complex):
complex64
和complex128
表示复数,分别使用 64 位和 128 位来存储实部和虚部。
布尔类型(bool):
bool
表示布尔值,只能是true
或false
。
字符串类型(string):
string
表示字符串,是不可变的字节序列。
字节类型(byte):
byte
是uint8
的别名,常用于处理字节数据。
符文类型(rune):
rune
是int32
的别名,用于表示 Unicode 字符。
指针类型(pointer):
- 指针类型用于存储变量的内存地址。例如,
*int
表示指向整数的指针。
- 指针类型用于存储变量的内存地址。例如,
数组类型(array):
- 数组是具有固定大小的数据结构,元素的类型和大小都是预定义的。
切片类型(slice):
- 切片是对数组的一层封装,可以动态增长和缩小,更灵活。
映射类型(map):
- 映射用于存储键值对,类似于其他语言中的哈希表或字典。
通道类型(channel):
- 通道用于在 Go 协程之间进行通信,是一种并发安全的数据传输方式。
结构体类型(struct):
- 结构体是一种用户定义的数据类型,用于封装不同类型的数据。
接口类型(interface):
- 接口定义了一组方法的集合,用于实现多态性。
这些基本类型组成了 Go 语言的基础,支持强大的类型系统和灵活的编程。通过组合这些类型,可以构建复杂的数据结构和实现各种算法。