<<GO语言核心36讲笔记-Part8>>

container里面的容器


主要介绍了list的使用规则,主要重点都是围绕使用来的。注意下面几点即可:

1. 链表开箱即用
2. 不能把自己定义的Element类型给库函数使用。

链表的开箱即用

个人理解就是指的你在调用一些函数的时候,会去check一下链表的状态。
如果元素和链表不属于同一个,那么后面的操作就没必要了,还有一些元素
添加的函数,会对判断链表状态,然后有目的性的Init操作。

l.lazyInit()// 惰性初始化函

链表的基本操作

基本上函数自己看就可以用了。

ring的用法

func doubleValue(in interface{}){
fmt.Println(in)
}

func testRing(){
    r := ring.New(10)
    for i :=0;i < r.Len();i++{
        r.Value = i
        r = r.Next()
    }

    r.Do(doubleValue) //func (r *Ring) Do(f func(interface{}))  //对链表中任意元素执行f操作,如果f改变了r,则该操作造成的后果是不可预期的。
    r = r.Move(2) ////返回移动n个位置(n>=0向前移动,n<0向后移动)后的元素,r不能为空。
    fmt.Println(r.Value)
    r = r.Next() //获取下一个
    fmt.Println(r.Value)
    r = r.Prev() //获取上一个
    fmt.Println(r.Value)
    r.Unlink(2) //从当前node的next开始删除n个元素
    for i :=0;i < r.Len();i++{
        fmt.Println("After remove 2 nodes:",r.Value)
        r = r.Next()
    }
}

思考题

1.ring包中的循环链表在哪些场景中用

循环链表个人感觉主要用于保存固定的数据,比如保存最近100次的操作。

2.你使用过container/heap包中的堆吗?它的适用场景又有哪些?

预留处理!!!!!!!!!!!!!!!!
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,805评论 19 139
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 9,882评论 1 14
  • 可能是因为刚刚开始教课,所以还没有把自己的定位,因此上一周出现了一点小状况,我和合作伙伴把彼此之间的想法毫无保留的...
    湉湉丫头阅读 1,540评论 0 0
  • 昨夜,我梦见, 自己穿一件白衬衫, 在草地上坐着, 阳光很暖,伴着微风, 像是春天。 是啊,这么暖和, 哪里像是冬...
    麦草店主阅读 1,058评论 0 0
  • 已过立冬,这气温也是一天比一天低了。要说这冬天最想做的事,无非就是滑雪和泡温泉了。滑雪实在是难度系数高了一些,倒不...
    神经病啊_7539阅读 1,805评论 0 0

友情链接更多精彩内容