【Golang系列】-字符串

2022-03-05

字符串

一个任意字节的常量序列

字符串字面量
使用“”或者‘来创建

  • 双引号:可解析的字符串、支持转义、但不能用来引用多行
  • 反引号:创建原生的字符串字面量,可能由多行组成,但不支持转义,并且可以包含除了反引号外其他所有字符
package main
import "fmt"
func main(){
    var str string = "hello world"
    fmt.Println(str)
}

字符串连接:

字符串支持+级联操作+= 追加操作

package main
import "fmt"
func main(){
    name := "tom"
    age := 20
    msg := name + " " + age
    fmt.Println(msg)
    msg = " "
    msg += name
    msg +=  " "
    msg += age
    fmt.Println(msg)
}

字符串是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给gc带来额外假的负担,所以性能比较差

字符串转义字符

包括:回车、换行、单双引号、制表符

转义符含义\r回车符\n换行符\t制表符`单引号``双引号\反斜杠

字符串切片操作
package main
import "fmt"
func main(){
    str := "hello world"
    n := 3
    m := 5
    fmt.Println(str[n])    //获取字符串索引位置为n的原始字节
    fmt.Println(str[n:m])  //截取字符串索引位置n到m-1的字符串
    fmt.Println(str[n:])   //截取字符串索引位置n到len(s)-1的字符串
    fmt.Println(str[:m])   //0到m-1的字符串
}

运算结果

108
lo
lo world
hello

字符串常用方法:

方法介绍len(str)+/fmt.Sprintfstrings.containsstrings.hasprefix,strings.hassuffixstrings.index(),strings.lastindex()

字符串格式化
占位符
普通占位符

布尔占位符

整数占位符

浮点数和复数的组成部分

字符串与字节切片

指针