字符与字符串

1、单引号括起来的只能是单个字符,但GO语言是utf8格式的,所以单个字符长度都为4字节,且一个汉字也是单个字符

unsafe.sizeof('c')  结果是4 unsafe.sizeof('我') 结果也是4

单个的字符可以用 单个的 rune 类型表示,rune类型等于于uint32,也就是说存储单个字符的变量,里面实际存储的是该字符的unicode编码

var a='c'  fmt.println(a),打印出来的是 99

var a='我'  fmt.println(a),打印出来的是 25105

2、字符串是使用双引号括起来,或反单引号括起来,反单引号(`)是主键区左上角那个,在(~)的下面。单引号不行

a="string"  b='string'

可使用(\)转义

<span style="font-size:18px;">t1 := "\"hello\""             //内容: "hello"
t2 := `"hello"`               //内容:和t1一致
t3 := "\u6B22\u8FCE"          //内容:你好</span>

3、字符串支持切片操作,可以看做是一个切片数组,数组下标从0开始

注意:因为对字符串直接使用切片时是通过字节进行索引的,但是非ASCII字符在内存中可能不是由一个字节组成。所以,s:="sdb我d是一re" 这个字符串长度是15,三个汉字占了9个字节,该字符串数组下标为0-14

直接使用下标取字符就可能取半个字符。

如果想对字符串中字符依次访问,可以使用range操作符

<span style="font-size:18px;">	var va rune
	for _, va = range s {
		fmt.Println(string(va))
	}</span>

s[n] 从字符串s中索引位置为n处的原始字节,返回的是rnue型值,可以用 string(s[n])转换回字符串型
s[n:m] 从位置n到位置m-1处取得的字符(字节)串, 返回的是String型值
s[n:] 从位置n到位置len(s)-1处取得的字符(字节)串
s[:m] 从位置0到位置m-1处取得的字符(字节)串
len(s) 字符串s中的字节数
len([]rune(s)) 字符串s中字符的个数,可以使用更快的方法utf8.RuneCountInString()
[ ]rune(s) 将字符串s转换为一个unicode值组成的串
string(chars) chars类型是[]rune或者[]int32, 将之转换为字符串
[ ]byte(s) 无副本的将字符串s转换为一个原始的字节的切片数组,不保证转换的字节是合法的UTF-8编码字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值