<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # list鏈表 `List`和`Element`。前者實現了一個雙向鏈表(以下簡稱鏈表),而后者則代表了鏈表中元素的結構。 `List`和`Element`都是結構體類型。結構體類型有一個特點,那就是它們的零值都會是擁有其特定結構,但沒有任何定制化內容的值,相當于一個空殼 ## 主要方法 * `MoveBefore`:給定的元素移動到另一個元素的前面 * `MoveAfter`:給定的元素移動到另一個元素的后面 * `MoveToFront`:把給定的元素移動到鏈表的最前端 * `MoveToBack`:把給定的元素移動到鏈表的最后端 * `Front`:獲取鏈表中最前端 * `Back`:獲取鏈表中最后端 * `InsertBefore`:指定的元素之前插入新元素 * `InsertAfter`:指定的元素之后插入新元素 * `PushFront`:用于在鏈表的最前端插入新元素。 * `PushBack`:用于在鏈表的最前端插入新元素。 **注意點** 在`List`包含的方法中,用于插入新元素的那些方法都只接受`interface{}`類型的值。這些方法在內部會使用`Element`值包裝接收到的新元素。 這樣做正是為了避免直接使用我們自己生成的元素,主要原因是避免鏈表的內部關聯遭到外界破壞,這對于鏈表本身以及我們這些使用者來說,都是有益的 **為什么鏈表可以做到開箱即用?** 延遲初始化,你可以理解為把初始化操作延后,僅在實際需要的時候才進行。延遲初始化的優點在于“延后”,它可以分散初始化操作帶來的計算量和存儲空間消耗。 `List`利用了自身,以及`Element`在結構上的特點,巧妙地平衡了延遲初始化的優缺點,使得鏈表可以開箱即用,并且在性能上可以達到最優 ## 結構 ~~~ type Element struct { // 元素保管的值 Value interface{} // 內含隱藏或非導出字段 } ~~~ list包實現了雙向鏈表。要遍歷一個鏈表: ~~~ for e := l.Front(); e != nil; e = e.Next() { // do something with e.Value } ~~~ Example ~~~ // Create a new list and put some numbers in it. l := list.New() e4 := l.PushBack(4) e1 := l.PushFront(1) l.InsertBefore(3, e4) l.InsertAfter(2, e1) // Iterate through list and print its contents. for e := l.Front(); e != nil; e = e.Next() { fmt.Println(e.Value) } ~~~ Output: ~~~ 1 2 3 4 ~~~ ## 使用 ~~~ package main; import ( "container/list" "fmt" ) func printList(l *list.List) { for e := l.Front(); e != nil; e = e.Next() { fmt.Print(e.Value, " "); } fmt.Println(); } func main() { //創建一個鏈表 l := list.New(); //鏈表最后插入元素 a1 := l.PushBack(1); b2 := l.PushBack(2); //鏈表頭部插入元素 l.PushFront(3); l.PushFront(4); printList(l); //取第一個元素 f := l.Front(); fmt.Println(f.Value); //取最后一個元素 b := l.Back(); fmt.Println(b.Value); //獲取鏈表長度 fmt.Println(l.Len()); //在某元素之后插入 l.InsertAfter(66, a1); //在某元素之前插入 l.InsertBefore(88, a1); printList(l); l2 := list.New(); l2.PushBack(11); l2.PushBack(22); //鏈表最后插入新鏈表 l.PushBackList(l2); printList(l); //鏈表頭部插入新鏈表 l.PushFrontList(l2); printList(l); //移動元素到最后 l.MoveToBack(a1); printList(l); //移動元素到頭部 l.MoveToFront(a1); printList(l); //移動元素在某元素之后 l.MoveAfter(b2, a1); printList(l); //移動元素在某元素之前 l.MoveBefore(b2, a1); printList(l); //刪除某元素 l.Remove(a1); printList(l); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看