golang bytes数组转io.writer_Golang基础教程——字符串篇

本文介绍了Golang中的字符串基础知识,包括定义、转换、比较、查找、计数、重复、替换、分割和连接等操作。重点讲解了strconv和strings包的使用,帮助读者理解和掌握Golang字符串处理。
摘要由CSDN通过智能技术生成

今天是golang专题的第6篇文章,这篇主要和大家聊聊golang当中的字符串的使用。

字符串定义

golang当中的字符串本质是只读的字符型数组,和C语言当中的char[]类似,但是golang为它封装了一个变量类型,叫做string。知道了string这个类型之后,我们就可以很方便地来初始化:

var str stringstr1 := "hello world"var str2 = "hello world too"

这里应该没什么难度,很好理解。由于这个数组是只读的,所以我们可以通过下标获取某一位的字符,但是不允许修改

// 允许fmt.Println(str1[3])// 错误str1[3] = 'l'

这个也不是golang的独创,很多语言当中都有这个限制,因为会将字符串作为const类型存储在专门的区域。所以不允许字符串进行修改,比如Python也是如此。

除了像是数组一样,支持下标的访问之外,go中的字符串还支持拼接以及求长度的操作。我们可以用len函数获取一个字符串的长度,用+来表示字符串的拼接:

len("hello")// 5c := "hello" + "world"// c="helloworld"

这些本来也属于常规操作,并不值得一提,但是关于len函数,值得仔细说说。这里有一个坑,关于utf-8编码。我们来看下面这个例子:

str := "hello 世界"fmt.Println(len(str))

按照我们的设想,它返回的应该是8,但是实际上我们这么操作会得到12。原因很简单,因为在utf-8编码当中,一个汉字需要3个字节编码。那如果我们想要得到字符串本身的长度,而不是字符串占据的字节数,应该怎么办呢?这个时候,我们需要用到一个新的结构叫做rune,它表示单个Unicode字符。

所以我们可以将string转化成rune数组,之后再来计算长度,得到的结果就准确了。

str := "hello 世界"fmt.Println(len([]rune(str)))

这样我们得到的结果就是8了,和我们预期一致了。如果你在使用golang的时候,需要用到utf-8编码,一定要小心。

类型转换

golang当中的字符串不像Java或者其

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值