开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情
今天来学习下Go常见的习题问题(五),也是面试中可能会遇到的,让我们来一起学习吧~
接口类型
观察下列代码,输出结果是什么?
func main() {
var i interface{}
if i == nil {
fmt.Println("nil")
return
}
fmt.Println("not nil")
}
- A. nil
- B. not nil
- C. compilation error
参考答案:选择A,当接口的动态值和动态类型都为nil的时候,接口类型值才为nil
map键值对
观察下列代码输出的结果是什么?
func main() {
s := make(map[string]int)
delete(s, "YYQQ")
fmt.Println(s["YYQQ"])
}
参考答案:输出0,因为删除map中不存在的键值对,不会起到任何作用,获取不存在的键值对的时候,会返回值类型对应的零值,所以返回int的零值就是0
关键字
下列选项中属于Go语言中的关键字的是?
- A.func
- B.struct
- C.class
- D.defer
参考答案:选择ABD, 下面列举了25个关键字
嵌套结构体
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.ShowB()
}
参考答案:teacher showB
在嵌套结构体中,People 称为内部类型,Teacher 称为外部类型;通过嵌套,内部类型的属性、方法,可以为外部类型所有,此外,外部类型还可以定义自己的属性和方法,甚至可以定义与内部相同的方法,这样内部类型的方法就会被“屏蔽”,这里ShowB()方法就是同名的方法,所以把内部类型的方法给屏蔽了
全局变量
定义一个包内全局字符串变量,下列选项中正确的是()
- A. var str string
- B. str := “”
- C. str = “”
- D. var str = “”
参考答案:选择AD, B选项的
:=声明方式只支持局部变量声明,C选项是赋值操作,必须在之前就要声明
总结
今天浅谈了Go的习题(五),主要介绍了GO面试中会出现的问题,接下来会继续分享其他的习题的相关知识,对于一个刚入门的我来说,还有许多地方需要学习,有错误的地方欢迎大家指出,共同进步!!