你好哇,欢迎来答题,一起来看下
1.关于协程,下面说法正确是()
- A. 协程和线程都可以实现程序的并发执行;
- B. 线程比协程更轻量级;
- C. 协程不存在死锁问题;
- D. 通过 channel 来进行协程间的通信;
参考答案及解析:AD。
2.关于循环语句,下面说法正确的有()
- A. 循环语句既支持 for 关键字,也支持 while 和 do-while;
- B. 关键字 for 的基本使用方法与 C/C++ 中没有任何差异;
- C. for 循环支持 continue 和 break 来控制循环,但是它提供了一个更高级的 break,可以选择中断哪一个循环;
- D. for 循环不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量;
参考答案及解析:CD。
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]
参考答案及解析:A。知识点:多重赋值。
多重赋值分为两个步骤,有先后顺序:
- 计算等号左边的索引表达式和取址表达式,接着计算等号右边的表达式;
- 赋值;
所以本例,会先计算 s[i-1],等号右边是两个表达式是常量,所以赋值运算等同于 i, s[0] = 2, "Z"
。
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
A.
type MyInt int
var i int = 1
var j MyInt = i
B.
type MyInt int
var i int = 1
var j MyInt = (MyInt)i
C.
type MyInt int
var i int = 1
var j MyInt = MyInt(i)
D.
type MyInt int
var i int = 1
var j MyInt = i.(MyInt)
2.关于switch语句,下面说法正确的有?
- A. 条件表达式必须为常量或者整数;
- B. 单个case中,可以出现多个结果选项;
- C. 需要用break来明确退出一个case;
- D. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case;
3.如果 Add() 函数的调用代码为:
func main() {
var a Integer = 1
var b Integer = 2
var i interface{} = &a
sum := i.(*Integer).Add(b)
fmt.Println(sum)
}
则Add函数定义正确的是()
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!