牛人是把书读薄,而我这只菜鸟是把书读得越来越厚了,以致于开始一起看书的伙伴怀疑我是不是偷懒,怎么就一点进展也没有。
其实只是我太喜欢钻牛角尖了,每每钻进死胡同后,死活出不来,所以一直就没有进展。
这不现在一个月过去了,这本书还停留在第三章。
package main
import (
"sort"
"fmt"
)
type Interface interface {
Len()int
Less(i,j int)bool
Swap(i,j int)
}
type Sortable interface{
sort.Interface
Sort()
}
type SortableStrings [3]string
func (k SortableStrings)Len() int {
res:=len(k)
//自己增加的打印
fmt.Printf("len:%v\n",k)
return res
}
func (k SortableStrings)Less(i,j int)bool {
res:=k[i]<k[j]
//自己增加的打印
fmt.Printf("less:%v,%v\n",k[i],k[j])
return res
}
func (k SortableStrings)Swap(i,j int) {
k[i],k[j]=k[j],k[i]
//自己增加的打印
fmt.Printf("Swap:%v,%v\n",k[i],k[j])
}
func (k SortableStrings)Sort() {
sort.Sort(k)
//自己增加的打印
fmt.Printf("Sort:%v\n",k)
}
func main() {
ss:=SortableStrings{"2","1","3"}
ss.Sort()
fmt.Printf("res:%v\n",ss)
}
运行结果:
len:3
less:1,2
Swap:2,1
less:3,1
Sort:[2 1 3]
res:[2 1 3]
上面这段例子来自于书中第三章接口部分的示例,作者举例是为了说明在go语言中合理得使用接口,可以实现继承的功能,另外复习了接收者取值和取指针会对结果的影响。
手贱又好奇心不知道在哪个胡同的我,又把所有结果值打印出来了,你问我打印这些有什么目的,我只是想要看下这些函数,最终会输出的结果又让我纠结了。
第二个Less输出less:3,1这是我怎么也想不明白的,原想着应该可以慢慢调试出来,可是调试了许多,一直没有进入到这一步,所以就得遗留这个问题了。
此为误人子弟的思考,具体还是要自己调试寻找答案的。
网友评论