Go面试题33

Posted by     "" on Thursday, January 2, 2020

Go面试题33

1: 关于协程,下面说法正确的是():

  • A. 协程和线程都可以实现程序的并发执行;
  • B. 线程比协程更加轻量级;
  • C. 协程不存在死锁问题;
  • D. 通过channel 来进行协程间的通信;

2: 关于循环语句,下面说法正确的有():

  • A. 循环语句既支持for关键字, 也支持whiledo-while;
  • B. 关键字for的基本使用方法与c/c++中没有任何差异;
  • C. for循环支持continuebreak 来控制循环, 但是它提供了一个更高级的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".

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付