golang提供的List
作为现代10后语言的golang(12年正式发布)。Golang的标准库提供了高级的数据结构List。具体在包 1 创建一个List对象来感受一下l:=list.New() l.PushBack("one") l.PushBack(2) fmt.Println(l) 上面的代码可以得到如下的输出: &{{0x2081a21b00x2081a21e0<nil>?reflect.Value?}2} 这里具体的0x数据可能会变动,其实际记录的是对象的地址,但是最后的“2”不会变动,其表示当前的list对象里面有两个元素。 这里我们通过使用 typeElementstruct{ //Thevaluestoredwiththiselement. Valueinterface{} //containsfilteredorunexportedfields } 2.遍历list上面的例子,仅仅用fmt.Println看到了list得简单的信息,那么若要遍历整个list怎么操作呢?来看代码: l:=list.New() l.PushBack("one") l.PushBack(2) l.PushBack("three") foriter:=l.Front();iter!=nil;iter=iter.Next(){ fmt.Println("item:",iter.Value) } 运行代码,我们可以看到结果: item:one item:2 item:three 这里,我们定义了一个迭代器变量iter,其为Element类型,通过调用list的 除了可以通过上面的函数得到单个元素外,我们还可以通过list的 3.修改list的成员在上面的例子中,我们已经演示了怎么向list中添加元素。 插入后如何删除元素呢?通过list的 我们来看一个实例。用这几个接口组合成一个Queue的实例: typeQueuestruct{ data*list.List } funcNewQueue()*Queue{ q:=new(Queue) q.data=list.New() returnq } func(q*Queue)Enqueue(vinterface{}){ q.data.PushBack(v) } func(q*Queue)Dequeue()interface{}{ iter:=q.data.Front() v:=iter.Value q.data.Remove(iter) returnv } func(q*Queue)Dump(){ foriter:=q.data.Front();iter!=nil;iter=iter.Next(){ fmt.Println("item:",iter.Value) } } funcmain(){ q:=NewQueue() q.Enqueue("one") q.Enqueue("two") q.Dump() v:=q.Dequeue() fmt.Println("v:",v) q.Dump() } 我们可以看到结果为: item:one item:two v:one item:two 最后。如果我们想清空list。可以调用其 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |