欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-11 15:28:43
...

点击上方蓝色“Golang来啦”关注我哟

加个“星标”,天天 15 分钟,一起学 Go

1.下面的代码有什么问题?

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6    s := make([]int, 3, 9)
 7    fmt.Println(len(s)) 
 8    s2 := s[4:8]
 9    fmt.Println(len(s2)) 
10}

参考答案及解析:代码没问题,输出 3 4。从一个基础切片派生出的子切片的长度可能大于基础切片的长度。假设基础切片是 baseSlice,使用操作符 [low,high],有如下规则:0 <= low <= high <= cap(baseSlice),只要上述满足这个关系,下标 low 和 high 都可以大于 len(baseSlice)。

引自:《Go语言101》

2.下面代码输出什么?

 1type N int
 2
 3func (n N) test(){
 4    fmt.Println(n)
 5}
 6
 7func main()  {
 8    var n N = 10
 9    p := &n
10
11    n++
12    f1 := n.test
13
14    n++
15    f2 := p.test
16
17    n++
18    fmt.Println(n)
19
20    f1()
21    f2()
22}

参考答案及解析:13 11 12。知识点:方法值。当指针值赋值给变量或者作为函数参数传递时,会立即计算并复制该方法执行所需的接收者对象,与其绑定,以便在稍后执行时,能隐式第传入接收者参数。

引自:《Go语言学习笔记》· 方法

解析若有不妥之处,欢迎在留言区交流、指正!

看下今天的题目:

1package main
2
3func main() {
4  var x interface{}
5  var y interface{} = []int{3, 5}
6  _ = x == x
7  _ = x == y
8  _ = y == y
9}

2.下面的代码输出什么?


两题均引自:《Go语言101》

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

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

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

推荐阅读:

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

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

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