博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言中的string知识点
阅读量:7103 次
发布时间:2019-06-28

本文共 1368 字,大约阅读时间需要 4 分钟。

1.Go语言String的本质就是一个[]byte,所以他们之间可以互相转换,byte数组的长度就是字符串的长度。

func StringTest1() {
str := "Hello,World" a := str[0] b := str[1] fmt.Printf("a=%c\n", a) fmt.Printf("b=%c\n", b) }

 结果

a=H b=e str=Mello,World

 

2.字符串的值一旦指定,就不能进行修改。如果想修改,则可以先将字符串装换成slice。

//当试图去修改str时候str[0] = 'M'

会出现如下错误提示

 

func StringTest1() {   str := "Hello,World"   a := str[0]   b := str[1]   fmt.Printf("a=%c\n", a)   fmt.Printf("b=%c\n", b)   var byteSlice []byte   byteSlice = []byte(str)   byteSlice[0] = 'M'   str = string(byteSlice)   fmt.Printf("str=%s\n", str)}

 结果

a=H b=e str=Mello,World

 

3.rune表示utf8的字符,一个rune字符由一个或多个byte组成。

rune和字符串长度之间是什么肥四?可以参考下面的例子:

func StringTest2() {    str2 := "Hello,世界"    var str2ByteSlice []byte    str2ByteSlice = []byte(str2)    var str2RuneSlice []rune    str2RuneSlice = []rune(str2)    fmt.Printf("strLen=%v\n",len(str2) )    fmt.Printf("str2ByteSlice=%v\n",len(str2ByteSlice) )    fmt.Printf("str2RuneSlice=%v\n",len(str2RuneSlice) )    for i:=0;i

结果是什么?

strLen=12 str2ByteSlice=12 str2RuneSlice=8

从结果看到

①字符串的长度和byte切片的长度是一致的

②字符串的长度要比rune切片的长度大,说明一个中文字符需要占用多个byte,这里是就是3个,所以才有后面 str2RuneSlice = 8这个结果

 进而我们可以遍历这个rune切片,追加下面代码

for i:=0;i

结果

str2RuneSlice[0]=H str2RuneSlice[1]=e str2RuneSlice[2]=l str2RuneSlice[3]=l str2RuneSlice[4]=o str2RuneSlice[5]=, str2RuneSlice[6]=世 str2RuneSlice[7]=界

 

 

转载于:https://www.cnblogs.com/dcz2015/p/10417198.html

你可能感兴趣的文章
SQL变量与全局变量
查看>>
bootstrap基础学习六篇
查看>>
[.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux)...
查看>>
Android横竖屏切换及其相应布局载入问题
查看>>
带辉光效果的跑马灯
查看>>
CSS隐藏元素的几个方法(display,visibility)的区别
查看>>
HTML 中的 dl(dt,dd)、ul(li)、ol(li)
查看>>
Linux下Redis主从复制以及SSDB主主复制环境部署记录
查看>>
如何让win10实现关机确认-暂没确认
查看>>
常用js函数整理--common.js
查看>>
java内存泄漏与内存溢出
查看>>
互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点
查看>>
sql server2008给数据表,字段,添加修改注释
查看>>
meta标签清理缓存
查看>>
onvif开发之设备发现功能的实现--转
查看>>
虚拟机下linux迁移造成MAC地址异常处理办法
查看>>
数据库事务原子性、一致性是怎样实现的?[转]
查看>>
“营改增”后你该知道的…代开发票需要知道的16个事项
查看>>
动态设置js的属性
查看>>
Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?
查看>>