[Go]新手入门:字符串string介绍
Posted 凌星An
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Go]新手入门:字符串string介绍相关的知识,希望对你有一定的参考价值。
介绍
字符串string在Go中属于内置类型,
其介绍如下:
string is the set of all strings of 8-bit bytes, conventionally but not necessarily representing UTF-8-encoded text. A string may be empty, but not nil. Values of string type are immutable.
string 是所有 8 位字节的字符串的集合,通常是UTF-8 编码的文本 但也有别的编码形式(eg:ASCII) 。一个字符串可能是空的,但不是nil 。字符串类型的值是不可变的。
通常情况下,编程语言都支持 “” (双引号括起来)的字符串,当然Go语言也支持这种形式
eg:
//声明一个string类型的变量str,其值为hello gopher
var str string = "hello gopher"
//打印变量str
fmt.Println(str)
//其结果为
//hello gopher
在这种形式下,倘若包含转义字符(eg: \\n 会实现换行的效果)
eg:
var str string = "hello\\ngopher"
fmt.Println(str)
/*
其结果为
hello
gopher
*/
Go语言还支持另一种形式的字符串`` (反引号括起来的字符串 即Esc下面那个按键)
这种形式的字符串与上一种最大的区别在于 对于转义字符的处理
倘若这种形式的字符串含有转义字符,则原样输出
eg:
var str string = `hello\\ngopher`
fmt.Println(str)
/*
hello\\ngopher
*/
除此之外,两种形式没有任何其他区别.
操作符
访问字符串中的单个字符
字符串可以通过[下标] 的形式,获取对应下标的元素
注: Go中下标也是从0开始的
eg:
var str string = "hello gopher"
fmt.Printf("%c,%c\\n", str[0], str[1])
/*
结果如下:
h,e
*/
注:
可以通过这种方式进行访问,但是不可以通过此方式修改字符串
获取字符串中某个字节的地址属于非法行为,例如 &str[0]
eg:
var str string = "hello gopher"
str[0]='a' //这是不被允许的
倘若需要修改字符串的内容,需要西安转换成切片的形式,在进行修改
eg:
//声明一个string类型的变量str,其值为hello gopher
var str string = "hello gopher"
//将字符串转换成切片,赋给ch变量
ch := []byte(str)
//把下标为0的位置修改为字符H
ch[0] = 'H'
//把切片变量ch强转为string类型,输出
fmt.Println(string(ch))
字符串比较
Go语言中可通过比较运算符(==、!=、<、<=、>=、>)在内存中按字节比较来实现字符串比较的.
var str string = "hello gopher"
var str1 string = "Hello gopher"
fmt.Println(str == str1)
fmt.Println(str > str1)
fmt.Println(str[0], str1[0])
/*
false
true
104 72
//ASCII编码,每个字符占用一个字节 h为104,H为72
//故str>str1 为真
*/
字符串拼接
Go中可以使用+来实现两个字符串的拼接
eg:
var str string = "hello" + " " + "gopher"
fmt.Println(str)
/*
hello gopher
*/
计算字符串长度
使用内置函数len来计算字符串使用的字节数
func len(v Type)
String: int the number of bytes in v
eg:
str := "中国"
str1 := "China"
fmt.Println("len(str):", len(str), "len(str1)", len(str1))
/*
其结果为:
len(str): 6 len(str1) 5
*/
str字符串命名只有两个汉字,为什么其结果为6呢?
Go其实使用了uft-8编码,也兼容ASCII编码
在Go中,使用中文输入法输入的字符,每个占用3个字节(包含汉字,中文符号)
英文输入法输入的字符,每个占用1个字节(包含字母及符号)
而数字不论那种输入法,每个都占用一个字节
注
对于含有中文和英文的字符串来说,我们可以使用uft8包中的RuneCountInString函数来计算字符个数
eg:
str := "中国China"
fmt.Println("len(str):", utf8.RuneCountInString(str))
/*
其结果为:
len(str): 7
2个汉字,5个字母
*/
故:计算字符串长度
ASCII 字符串长度使用 len() 函数。
Unicode 字符串长度使用 utf8.RuneCountInString() 函数。
遍历字符串
ASCII 字符串遍历使用for循环
Unicode 字符串遍历使用for - range循环
eg:
str := "China"
for i := 0; i < len(str); i++
fmt.Printf("%d :%c\\n", i, str[i])
str = "中国China"
for k, v := range str
fmt.Printf("%d :%c\\n", k, v)
/*
其结果为:
0 :C
1 :h
2 :i
3 :n
4 :a
0 :中
3 :国
6 :C
7 :h
8 :i
9 :n
10 :a
*/
觉得不错,来个赞呗
以上是关于[Go]新手入门:字符串string介绍的主要内容,如果未能解决你的问题,请参考以下文章