41-50
41. 下面代码中 A B 两处应该怎么修改才能顺利编译?
func main() {
var m map[string]int //A
m["a"] = 1
if v := m["b"]; v != nil { //B
fmt.Println(v)
}
}42. 下面代码输出什么?
type A interface {
ShowA() int
}
type B interface {
ShowB() int
}
type Work struct {
i int
}
func (w Work) ShowA() int {
return w.i + 10
}
func (w Work) ShowB() int {
return w.i + 20
}
func main() {
c := Work{3}
var a A = c
var b B = c
fmt.Println(a.ShowB())
fmt.Println(b.ShowA())
}A. 23 13
B. compilation error
43 下面代码中,x 已声明,y 没有声明,判断每条语句的对错。
44. 下面代码输出什么?
45. 下面代码输出什么?
A
46. f1()、f2()、f3() 函数分别返回什么?
1 5 1
47. 下面代码段输出什么?
29 29 28
48. 下面这段代码正确的输出是什么?
A. F M D
B. D F M
C. F D M
答:C
解析:
被调用函数里的 defer 语句在返回之前就会被执行,所以输出顺序是 F D M。
49.
50. 下面的两个切片声明中有什么区别?哪个更可取?
解析:
A 声明的是 nil 切片;B 声明的是长度和容量都为 0 的空切片。第一种切片声明不会分配内存,优先选择。
最后更新于
这有帮助吗?