Go语言的字符串是使用UTF-8编码的,UTF-8是Unicode的实现方式之一,因此可以直接在代码中使用中文,而不像python那样别扭。给我们国人开发带来很好的便利。Go语言中的原生字符串需要使用双引号("")或反引号(``)定义。单引号不能用来表示字符串,否则会报错:invalid character literal (more than one character) cannot use '\u0000' (type rune) as type string in field value。本文地址:http://www.04007.cn/article/771.html,未经许可,不得转载.
在GO语言中双引号:"", 用于单行字符串。如果需要用于多行字符串,需要使用反引号:``,此时反引号中的内部会原样解析。GO有点像python和lua, GO对字符串的访问也可以支持[]索引式访问,只能访问到字符串中的字符,但不可以修改。如下示例:本文地址:http://www.04007.cn/article/771.html,未经许可,不得转载.
#按索引输出字串中的字符 func main() { strs := "abcd" fmt.Print(strs[0]) fmt.Println(string(strs[0])) fmt.Print(strs[2]) fmt.Println(string(strs[2])) } #输出内容 [C:/Go/GOPATH/src/hello] 97a 99c
需要注意的是golang的字符称为rune(int32),等价于C中的char,如上例中直接输出strs[0]只会输出字符串的ASCII码整数值,字符串可直接与整数转换,rune实际就是整型,必需先将其转换为string才能打印出来,否则打印出来的是一个整数。如下示例:本文地址:http://www.04007.cn/article/771.html,未经许可,不得转载.
#rune示例 func main() { var char rune = 'k' var value int = 110 toint := int(char) tochar := rune(value) fmt.Println(toint) fmt.Println(tochar) fmt.Println(string(tochar)) } #输出结果 [C:/Go/GOPATH/src/hello] 107 110 n
GO语言中使用len()函数计算字符串占用的字节数,utf-8是变长字符集,英文标点占用1个字节,中文占用3个字节。go语言中的字符串实际上是类型为byte的只读切片。或者说一个字符串就是一堆字节。这意味着,当我们将字符存储在字符串中时,实际存储的是这个字符的字节。一个字符串包含了任意个byte,它并不限定Unicode,UTF-8或者任何其他预定义的编码。go语言中的源码定义为utf-8文本,没有其他的表示。对字符串的遍历提供了一种特殊处理,那就是字符串上使用for…range循环。range循环迭代时,就会解码一个utf-8编码的rune。如下示例:本文地址:http://www.04007.cn/article/771.html,未经许可,不得转载.
#字符串的Unicode遍历 func showReflect() { tips := "武汉加油!go!" fmt.Println(len(tips)) for _, char := range []rune(tips) { fmt.Println(string(char)) } } #打印结果 [C:/Go/GOPATH/src/hello] 18 '武''汉''加''油''!''g''o''!'本文地址:http://www.04007.cn/article/771.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/771.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |