美文网首页go学习
《Go并发编程实践》接口练习

《Go并发编程实践》接口练习

作者: 大雁儿 | 来源:发表于2017-01-16 13:54 被阅读52次

    牛人是把书读薄,而我这只菜鸟是把书读得越来越厚了,以致于开始一起看书的伙伴怀疑我是不是偷懒,怎么就一点进展也没有。
    其实只是我太喜欢钻牛角尖了,每每钻进死胡同后,死活出不来,所以一直就没有进展。
    这不现在一个月过去了,这本书还停留在第三章。

    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这是我怎么也想不明白的,原想着应该可以慢慢调试出来,可是调试了许多,一直没有进入到这一步,所以就得遗留这个问题了。

    此为误人子弟的思考,具体还是要自己调试寻找答案的。

    相关文章

      网友评论

        本文标题:《Go并发编程实践》接口练习

        本文链接:https://www.haomeiwen.com/subject/hkqpbttx.html