Go 语言程序设计——字符串类型(1)

字面量、操作符和转义:

  • 字面量使用 " 双引号或者 ` 反引号来创建

  • 双引号创建的字符串字面量,支持转义序列,但不能用来引用多行

  • 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成;它们不支持任何转义序列,并且可以包含除了反引号之外的任何字符

  • 原生的字符串字面量则用于书写多行消息、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 接口的值以及其他字符串中
常用打印函数:


fmt包中的打印函数

格式指令和修饰符:


格式指令和修饰符
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,955评论 0 5
  • 字符串和字符 [TOC] 字符串是例如 "hello, world" , "albatross" 这样的有序的 C...
    伍哥___阅读 4,748评论 0 0
  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 9,916评论 1 27
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 8,665评论 0 6
  • 字符串和字符 甲串是一系列字符,如的"hello, world"或"albatross"。Swift字符串由Str...
    Fuuqiu阅读 4,640评论 0 0