学习Golang语言(4):类型--字符串

codemanship · · 2579 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

学习Golang语言(4):类型--字符串 --- 跟着“码术”一起学习Golang语言,今天继续讲解Golang中的类型。今天讲解的是字符串。 **数值类型** 补充上一章节没有指出的地方: Golang还定义了三种依赖系统的类型:int、unint和uintptr。因为在32位系统和64位系统上用来表示这些类型的位数是不同的。 **字符串** Golang中另一个重要的内建类型是string。 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。 Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 字符串的表示很简单,用双引号("")或者反引号(\`\`)来创建。例如:"hello world" 或者 \`hello world\`。 **两者的区别:** 双引号之间的转义符会被转义,而反引号之间的字符保持不变。例如: ![此处输入图片的描述][1] 输出: ![此处输入图片的描述][2] 如果使用单引号(')则表示一个字符(UTF-8编码)----这种在Go语言中不是string。 字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。一些操作在Go是非法的。 var s = "hello world" s[0] = 'c' <-----修改第一个字符为'c',这回报错。 在Go中实现这个需要这么操作: ![此处输入图片的描述][3] 1、将s转换为rune数组; 2、修改数组的第一个元数; 3、创建新的字符串s2; 4、打印输出。 **多行字符串** 由于Go语言会在每行后自动添加分号,因此使用多行字符串时候,需要注意: s := "Starting part" + "Ending part" 会被自动转换为: s := "Starting part"; + "Ending part"; 这个是错误的,应当写成: s := "Starting part"+ "Ending part" 这样Go就不会在错误的地方插入分号,另外一种方式就是使用反引号(``)作为原始字符串符号: s := `Starting part Ending part` 此时s也包含了换行。因为反引号中间的字符会保持不变。 **字符串转换** 可以使用string(char)将一个字符转换成一个包含单个字符的字符串。 **字符串处理的包** --------------------------------------------- **string包** 包括字符串的分割,替换,合并等处理; **strconv包** 提供许多可以在字符串和其他类型的数据之间的转换函数。 **utf-8包** 主要用来查询和操作UTF-8编码的字符串或者字符切片。 **unicode包** 提供一些用来检查Unicode码点是否符合主要标准的函数。 --------------------------------------------- **rune** Rune是int32的别名。用UTF-8进行编码。这个类型什么时候使用呢?例如需要遍历字符串的字符时候,可以混换每个字节。为了获得实际的字符,需要使用rune类型。 ![此处输入图片的描述][4] 输出结果: 6 2 [20320 22909] --------------------------------------------- 欢迎关注码术!一起学习golang. ![欢迎关注码术][5] [1]: http://mmbiz.qpic.cn/mmbiz/zmOTt5uTqlondiceTic5nZaDpop7q03WuyUsicIw7uOTve8p5jH7sFUdommMsqVguSOcev6K8v6tJQ2icTj59yiagbA/0 [2]: http://mmbiz.qpic.cn/mmbiz/zmOTt5uTqlondiceTic5nZaDpop7q03WuySzvDxcqOgxFhTZFrGC2L1uZqDlrCJSKeib5ydFic6NZU7dlEe89hTic5g/0 [3]: http://mmbiz.qpic.cn/mmbiz/zmOTt5uTqlondiceTic5nZaDpop7q03WuymhzCetTInOXbMXb09Q69oqgxeetPvibMehBZnUoVRG7D1mjaCa0Bq7Q/0 [4]: http://mmbiz.qpic.cn/mmbiz/zmOTt5uTqlondiceTic5nZaDpop7q03WuyTZS0Z1jO6GUYuqCwj4h5f8dgytjOdLWh7BMEC1yQ1YVzxAic8l4dJnA/0 [5]: http://img.blog.csdn.net/20140526192732187

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2579 次点击  
加入收藏 微博
1 回复  |  直到 2014-08-27 03:22:50
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传