Go面试题13

Posted by     "" on Monday, December 23, 2019

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方法

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

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