字符类型单引号和双引号区别是什么?

来源:2-1 变量定义

qq_永远的稻米_0

2022-06-06 23:26:13

byte、rune、string的具体解释是什么?最近在做算法题,各种byte、rune、string之间切换,还有就是单引号和双引号之前的区别理不清,

我现在理解:

  1. 单引号是单字符,可以是byte也可以是rune,string是双引号字符串

  2. string可以转化为[]byte(s)或者[]rune(s),最后再变为string([]rune(s))

无法理解的什么时候[]byte,什么时候[]rune, 直接string取第i个s[i]好像就是单引号的byte类型,'0'是ascll的48?理不清。。。

写回答

1回答

ccmouse

2022-06-07

这个我后面会详细讲到rune和byte。不过不是同学这个角度。


单引号是单字符,可以是byte也可以是rune,string是双引号字符串:这个是对的。

string可以转化为[]byte(s)或者[]rune(s),最后再变为string([]rune(s)):这个也是对的。


什么时候[]byte,什么时候[]rune,这个取决于你要什么。具体例子可以参照3-6 字符和字符串处理。

[]byte就是你想知道每个字节的内容。但是string是UTF-8编码的,这是可变长的编码,通常一个英文字符1byte,一个汉字3byte,那么我想取第几个“字”(rune),就要使用[]rune。


然后s[i]的确是第i个byte,不是rune。要取第i个rune,就要先[]rune(s)。


然后'0'是ascii 48,对的。我们可以说

var b1 byte = 48

var b2 byte = '0'

甚至:var n int = '0'


1

0 学习 · 1399 问题

查看课程