1.字面量
字面量是没经过标识符封装看到的量 ,是内存中值的初始状态
var x string #x是变量
x := "1" #x是变量 ,"1"是字面量 (肉眼所见)
const x int = 10 #x是常量 ,10是字面量
2.创建字符串字面量
解释性字符串字面量双引号中写入 ,转义符可以使用 ,常见的\t \n
原始字符串使用反撇号写入 ,任何字符都是字符串
3.字符串拼接
使用缓冲区类型拼接变量效率高 ,更多操作看bytes包

1 package main
2
3 import (
4 "bytes"
5 "fmt"
6 )
7
8 func main() {
9 //字符串使用加号拼接效率低
10 temp := ""
11 for i:=0;i<100;i++{
12 temp += "Zz"
13 }
14 fmt.Println(temp)
15 //使用缓冲区拼接性能提升
16 var cache bytes.Buffer //声明缓冲区
17 for i:=0;i<100;i++{
18 cache.WriteString("Zz") //写入字符串类型
19 }
20 fmt.Println(cache.String()) //读出字符串类型
21
22 }
4.字符串访问
go使用unicode字符集 ,utf-8编码方式
字符串使用索引访问得到的是对应的编码 ,可以使用%q转为字符

1 package main
2
3 import "fmt"
4
5 func main() {
6 //字符串使用加号拼接效率低
7 a := "ABCDEF"
8 fmt.Println(a[0]) //打印10进制编码
9 fmt.Printf("%q\n",a[1]) //打印编码对应的字符
10 fmt.Println(a[0:1]) //切片访问的是字符
11 }
5.字符串操作
更多参考标准库的strings包 (返回新的字符串,bool值)
1)判断字符串是否以XX开头 , 是否以XX结尾

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "ABCDEF"
10 fmt.Println(strings.HasPrefix(a, "A"))
11 fmt.Println(strings.HasSuffix(a, "A"))
12 }
2)判断字符串是否包含子串 ,或某个元素

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "ABCDEF"
10 fmt.Println(strings.Contains(a,"A"))
11 fmt.Println(strings.Contains(a,"BCD"))
12 }
3)统一字符串大小写

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "ABcdeF"
10 fmt.Println(strings.ToUpper(a))
11 fmt.Println(strings.ToLower(a))
12 }
4)字符串翻倍

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "AB"
10 fmt.Println(strings.Repeat(a,3))
11 }
5)字符串替换

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "ABCDEFACF"
10 fmt.Println(strings.Replace(a,"A","Z",1))
11 fmt.Println(strings.ReplaceAll(a,"A","Z"))
12 }
6)字符串去空白

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := " Top is theshy 666 "
10 fmt.Println(a)
11 fmt.Println(strings.TrimSpace(a))
12 }
7)字符串分割 ,放入切片中

1 package main
2
3 import (
4 "fmt"
5 "reflect"
6 "strings"
7 )
8
9 func main() {
10 a := "AB,CD,EF,ACF"
11 slice1 := strings.Split(a,",")
12 fmt.Println(len(slice1))
13 fmt.Println(reflect.TypeOf(slice1))
14 }
8)将可迭代元素拼接为字符串 ,使用指定符号分割

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 a := "AB,CD,EF,ACF"
10 slice1 := strings.Split(a,",")
11 b := strings.Join(slice1,"+")
12 fmt.Println(b)
13 }
9)查找是否包含子串 ,返回-1为不包含

1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9 str1:= "hello my name is quguanwen"
10 fmt.Println(strings.Index(str1,"quguanwen"))
11 fmt.Println(strings.Contains(str1,"quguanwen"))
12 }
