Go 面试每天一篇(第 17 天)

Go 面试每天一篇(第 17 天),第1张

概述 昨天的题目相对比较简单,但需要注意的知识点挺多的,先看下昨天题目的解析:1.参考答案及解析:a、b、c的长度和容量分别是03、23、12。知识点:数组或切片的截取 *** 作。截取 *** 作有带2个或者3个参数,形如:[i:j]和[i:j:k],假设截取对象的底层数组长度为l。在 *** 作符[i:j]中,如果

 

昨天的题目相对比较简单,但需要注意的知识点挺多的,先看下昨天题目的解析:

1.参考答案及解析:a、b、c 的长度和容量分别是 0 3、2 3、1 2。知识点:数组或切片的截取 *** 作。截取 *** 作有带 2 个或者 3 个参数,形如:[i:j] 和 [i:j:k],假设截取对象的底层数组长度为 l。在 *** 作符 [i:j] 中,如果 i 省略,默认 0,如果 j 省略,默认底层数组的长度,截取得到的切片长度和容量计算方法是 j-i、l-i。 *** 作符 [i:j:k],k 主要是用来限制切片的容量,但是不能大于数组的长度 l,截取得到的切片长度和容量计算方法是 j-i、k-i。

2.参考答案及解析:

func main() {
    m := make(map[string]int)
    m["a"] = 1
    if v,ok := m["b"]; ok {
        fmt.Println(v)
    }
}

在 A 处只声明了map m ,并没有分配内存空间,不能直接赋值,需要使用 make(),都提倡使用 make() 或者字面量的方式直接初始化 map。

B 处,v,k := m["b"] 当 key 为 b 的元素不存在的时候,v 会返回值类型对应的零值,k 返回 false。

3.参考答案及解析:B。知识点:接口的静态类型。a、b 具有相同的动态类型和动态值,分别是结构体 work 和 {3};a 的静态类型是 A,b 的静态类型是 B,接口 A 不包括方法 ShowB(),接口 B 也不包括方法 ShowA(),编译报错。看下编译错误:

a.ShowB undefined (type A has no fIEld or method ShowB)
b.ShowA undefined (type B has no fIEld or method ShowA)

更多知识点看下接口的文章。

欢迎在留言区补充!

看下今天的题目:
1.下面代码中,x 已声明,y 没有声明,判断每条语句的对错。

1. x, _ := f()
2. x, _ = f()
3. x, y := f()
4. x, y = f()

2.下面代码输出什么?

func increaseA() int {
    var i int
    defer func() {
        i++
    }()
    return i
}

func increaseB() (r int) {
    defer func() {
        r++
    }()
    return r
}

func main() {
    fmt.Println(increaseA())
    fmt.Println(increaseB())
}

A. 1 1

B. 0 1

C. 1 0

D. 0 0

3.下面代码输出什么?

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() {
    var a A = Work{3}
    s := a.(Work)
    fmt.Println(s.ShowA())
    fmt.Println(s.ShowB())
}

A. 13 23

B. compilation error

 

 

答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!

ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!

所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!

 

推荐阅读:

非懂不可的Slice(一)

非懂不可的Slice(二)

Go 语言接口详解(一)

Go 语言接口详解(二)

 

 

如果我的文章对你有所帮助,点赞、转发都是一种支持!

 

总结

以上是内存溢出为你收集整理的Go 面试每天一篇(第 17 天)全部内容,希望文章能够帮你解决Go 面试每天一篇(第 17 天)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1211901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存