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》
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
如果我的文章对你有所帮助,点赞、转发都是一种支持!