linuxea:go字符串string类型简述(10)


字符串也可以作为算数运算,比如拼接。字符串也可以作为关系运算。赋值运算。可以通过索引获取。字符串定义内容必须是ascii,可以作为切片。而切片必须配置一个start和end。通常,我们可以使用len来获取字符串长度,并且可以使用len(string)-1来获取字符串最后一位

I. 定义字符串

我们在定义字符串的时候,使用双引号和反引号来赋值

    var name string = "mark"
    var desc string = `我是字符串`
    fmt.Println(name,desc)

双引号是可解释的字符串,反引号是原生字符串

[root@marksugar /opt/Golang]# go run string.go 
mark 我是字符串

在字符串中有一些特殊字符,如:\n,\f,\t,\r,\b,\v

    var name string = "ma\trk"
    var desc string = `我是\t字符串`
    fmt.Println(name,desc)

这里的\t是一个tab,也就是4个空格

[root@marksugar /opt/Golang]# go run string.go 
ma  rk 我是\t字符串

算数运算

可以使用+进行字符串的链接

    var name string = "mark"
    var desc string = `是字符串`
    fmt.Println(name+desc)

运行

[root@marksugar /opt/Golang]# go run string.go 
mark是字符串

关系运算

关系运算分为:==,!=,>,>=,<,<=

    fmt.Println("a" == "b")  是否等于
    fmt.Println("a" != "b")  是否不等于
    fmt.Println("a" < "b")   是否小于
    fmt.Println("a" > "b")   是否大于
    fmt.Println("aa" <= "b")  是否小于等于
    fmt.Println("a" >= "bb")  是否大于等于

运算大小比较是根据ASCII 码,从左到右进行比较:

[root@marksugar /opt/Golang]# go run string.go 
false
true
true
false
true
false

赋值运算

    s := "my name is "
    s += "mark"
    fmt.Println(s)

运算

[root@marksugar /opt/Golang]# go run string.go 
my name is mark

索引

索引计算是0-n-1,n是字符串长度.

    desc = "abcdefg"
    fmt.Printf("%T %c\n",desc[0],desc[0])

desc[0],0对应a,从左到右,索引类型是uint8,这里打印使用的是%c
运行

[root@marksugar /opt/Golang]# go run string.go 
uint8 a

切片

字符串定义内容必须是ascii

切片是从哪里到哪里,比如:从1到3--desc = "abcdefg",从左到右,1到3则是bc,切片类型string,这里打印使用的是%s

  fmt.Printf("%T %s\n",desc[start:end],desc[start:end])

end不能超过字符串的长度

fmt.Printf("%T %s\n",desc[1:3],desc[1:3])

运行

[root@marksugar /opt/Golang]# go run string.go 
string bc

!!! 字符串定义内容必须是ascii是因为在切片或者索引的时候会出现乱码,特别是在中文字符的时候。如下:

    desc = "我我我"
    fmt.Printf("%T %c\n",desc[0],desc[0])
    fmt.Printf("%T %s\n",desc[1:3],desc[1:3])

运行:

[root@marksugar /opt/Golang]# go run string.go 
uint8 æ
string  

字符串长度

字符串长度也需要是ascii码,才能精准计算,而中文字符可能使用到三到四个字节。

    desc = "abcdefg"
    fmt.Println(len(desc))

    desc = "我我我"
    fmt.Println(len(desc))

运行

[root@marksugar /opt/Golang]# go run string.go 
7
9

所以这里desc = "我我我"len计算是9。而中文字符串有其他方式。

去掉最后一位

如果你要取最后一位则是len(desc)-1)

    desc = "abcdefg"
    fmt.Println("desc:",len(desc))
    fmt.Println("desc:",len(desc)-1)

如下:

[root@marksugar /opt/Golang]# go run string.go 
desc: 7
desc: 6
0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2019-10-11分类: Golang

标签: Golang

发表评论