Go面试题33
1: 关于协程,下面说法正确的是():
- A. 协程和线程都可以实现程序的并发执行;
- B. 线程比协程更加轻量级;
- C. 协程不存在死锁问题;
- D. 通过
channel
来进行协程间的通信;
2: 关于循环语句,下面说法正确的有():
- A. 循环语句既支持
for
关键字, 也支持while
和do-while
; - B. 关键字
for
的基本使用方法与c/c++
中没有任何差异; - C.
for
循环支持continue
和break
来控制循环, 但是它提供了一个更高级的break
, 可以选择中断哪一个循环; - D.
for
循环不支持以逗号为间隔的多个复制语句, 必须使用平行赋值的方式来初始化多个变量;
3: 下面代码输出正确的是?
func main() {
i := 1
s := []string{"A", "B", "C"}
i, s[i-1] = 2, "Z"
fmt.Printf("s: %v\n", s)
}
- A.
s:[Z,B,C]
- B.
s:[A,Z,C]
参考答案及解析
1: 答案: AD
.
2: 答案: CD
.
3: 答案及解析: A
. 知识点: 多重赋值.
多重赋值分为两个步骤, 有先后顺序:
- 计算等号左边的索引表达式和取值表达式,接着计算等号右边的表达式;
- 赋值;
所以本例, 会先计算s[i-1]
, 等号右边是两个表达式是常量, 所以赋值运算等同于i, s[0] = 2, "Z"
.
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付