字符串也可以作为算数运算,比如拼接。字符串也可以作为关系运算。赋值运算。可以通过索引获取。字符串定义内容必须是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