channels[i] <- 'a' + i 后返回b,c,d的疑问

来源:11-1 channel

weixin_慕九州8013434

2021-04-13

老师你好,在本节课里

for i := 0; i < 10; i++{
	channels[i] <- 'a' + i
}

这段代码,我没转过来,定义的channel[i]数组接收字符a+i,得到的不应该是a012…吗,怎么打印的是a,b,c,d呢,还望老师不吝教导下,谢谢了

写回答

1回答

ccmouse

2021-04-17

是的。go是强类型语言,字符串和整数是不能相加的。我们看下面的情况:

"a"+1,注意,这里是双引号,代表字符串a与整数1相加,无法编译。

"a"+"1",得出"a1"

'a'+1,这里'a'是单引号,代表rune类型,rune是int32的别名,所以'a'+1可以相加。加出来的结果是'b'的ascii码。我们后面用%c,按照字符来打印的时候,就出来了b。

'a'+'1',也可以加,不过是'a'的ascii码加上'1'的ascii码,这个结果没什么意义。

"a"+'1',当然不可以,类似字符串和整数相加,编译错误。

0
1
weixin_慕九州8013434
非常感谢老师解惑!
2021-04-21
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程