Go面试题13
1: 定义一个包内全局字符串变量, 下面语法正确的是()
- A.
var str string
- B.
str := ""
- C.
str = ""
- D.
var str = ""
2: 下面这段代码输出什么?
package main
import "fmt"
func hello(i int) {
fmt.Println(i)
}
func main() {
i := 5
defer hello(i)
i = i + 10
}
3: 下面这段代码输出什么?
package main
import "fmt"
type People struct {}
func (p *People) ShowA() {
fmt.Println("showA")
p.ShowB()
}
func (p *People) ShowB() {
fmt.Println("showB")
}
type Teacher struct {
People
}
func (t *Teacher) ShowB() {
fmt.Println("teacher showB")
}
func main() {
t := Teacher{}
t.ShowA()
}
参考答案及解析
1: 答案及解析: AD
. B
只支持局部变量生命; C
是赋值,str
必须在之前已经声明过;
2: 答案及解析: 5
. 这个例子中, hello()
函数的参数在执行defer
语句的生活会保存一份副本, 在实际调用hello()
函数时用,所以是5
.
3: 答案及解析:
showA
showB
知识点: 结构体嵌套. 这道题可以结合第12天的第三道题一起看, Teacher
没有自己的ShowA()
, 所以调用内部类型people
的同名方法, 需要注意的是第五行
调用自己的ShowB
方法
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付