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

2023年 7月 15日 80.7k 0

请输入图片描述

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

定义字符串

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

    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 = "matrk"
    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 %cn",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 %sn",desc[start:end],desc[start:end])

end不能超过字符串的长度

fmt.Printf("%T %sn",desc[1:3],desc[1:3])

运行

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

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

    desc = "我我我"
    fmt.Printf("%T %cn",desc[0],desc[0])
    fmt.Printf("%T %sn",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

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论