字面量、操作符和转义:
-
字面量使用
"
双引号或者 ` 反引号来创建 -
双引号创建的字符串字面量,支持转义序列,但不能用来引用多行
-
反引号用来创建原生的字符串字面量,这些字符串可能由多行组成;它们不支持任何转义序列,并且可以包含除了反引号之外的任何字符
-
原生的字符串字面量则用于书写多行消息、HTML以及正则表达式
-
针对长的可解析的字符串字面量,可以使用
+
级联符将这些片段连接起来,Go 语言支持+=
追加操作符 -
转义符:
常用转义符
-
常用操作符:
字符串常用操作符
比较字符串:
- Go 语言字符串支持常规的比较操作
<
、<=
、==
、!=
、>
和>=
- Go 语言对字符串按字节比较的方式相当于英文的
ASCII
排序方式 - 使用 Go 语言比较字符串会有三个问题(这3个问题困扰每种使用Unicode字符串的编程语言,不局限于Go语言):
- 有些Unicode编码的字符可以用两个或者多个不同的字节序列来表示
- 有些情况下用户可能会希望把不同的字符看成相同的
- 有些字符的排序是与国家语言相关的
字符和字符串
- 一个单一的字符可以用一个单一的
rune
(或者int32
)来表示 - Go 语言的字符串表示一个包含 0 个或者多个字符序列的串
- 一个字符串内部,每个字符都表示成一个或者多个UTF-8编码的字节
-
+=
操作符并不是在一个循环中往字符串末尾追加字符串最有效的方式 - 更高效的是使用
bytes.Buffer.WriteString()
方法,它会将需要串联的字符串写入buffer
中,最后bytes.Buffer.String()
可以取回整个级联的字符串 - 字符串类型还支持切片(因为在底层一个字符串实际上就是一个增强的
[]byte
切片)
大O表示法
大O表示法 O(…)
在复杂性理论中是为特定算法所需的处理器和内存消耗给出一个近似边界
-
O(1)
意味着常量时间,也就是说,无论n的大小为何,这都是最快的可能 -
O(log n)
意味着对数时间,速度很快,与log n成正比 -
O(n)
意味着线性时间,速度也很快,并且与n成正比 -
O(n2)
(n的2次方)意味着二次方时间,速度开始变慢,并且与n的平方成正比 -
O(nm)
(n的m次方),意味着多项式时间,随着n的增长,它很快就变得很慢,特别是当m≥3时 -
O(n!)
意味着阶乘时间,即使是对于小的n值,这在实际使用中也会非常慢
字符串索引与切片
- Go 语言支持Python中字符串分割语法的一个子集
使用 fmt 包来格式化字符串
Go语言标准库中的fmt包提供了打印函数将数据以字符串形式输出到控制台、文件、其他满足io.Writer 接口的值以及其他字符串中
常用打印函数:
![](https://img.haomeiwen.com/i831991/4307de88849ba1c0.png)
格式指令和修饰符:
![](https://img.haomeiwen.com/i831991/d310251b67e2eb0e.png)
网友评论