golang基础教程——字符串篇

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

本文始发于个人公众号:TechFlow,原创不易,求个关注


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


字符串定义


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

var str string
str1 := "hello world"
var str2 = "hello world too"

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

// 允许
fmt.Println(str1[3])

// 错误
str1[3] = 'l'

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

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

len("hello")
// 5

c := "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或者其他语言一样封装地非常完善,当我们想要将整形或者是浮点型转成字符串,或者是想要将字符串转成整形和浮点型的时候并没有方法可以直接调用,而必须要通过库函数。golang当中提供了strconv库,用来实现字符串的一些操作。


字符串转整数、浮点数

字符串转整数的方法有两个,一个是ParseInt还有一个是ParseUint,这两个方法本质上都是将字符串转成整数。区别在于前者会保留符号,后者是无符号的,用于无符号整数。

这两个函数都接受三个参数,第一个参数是要转类型的字符串,第二个参数int的进制,比如二进制、八进制还是16进制、32进制。第三个参数表示返回bit的大小,有效值为0,8,16,32,64,如果传入0就返回int或者是uint类型,如果是32,则会返回int32类型。

函数的返回值有两个,第一个是类型转换之后的结果,第二个是一个error,也就是异常类型,表示在转换的过程当中是否有出现异常。如果没有异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值