<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                slice是 Go 中的一種基本的數據結構,使用這種結構可以用來管理數據集合。但是slice本身并不是動態數據或者數組指針。slice常見的操作有 reslice、append、copy。 slice自身并不是動態數組或者數組指針。它內部實現的數據結構通過指針引用底層數組,設定相關屬性將數據讀寫操作限定在指定的區域內。slice本身是一個只讀對象,其工作機制類似數組指針的一種封裝。 slice是對數組一個連續片段的引用,所以切片是一個引用類型(因此更類似于 C/C++ 中的數組類型,或者 Python 中的 list類型)。這個片段可以是整個數組,或者是由起始和終止索引標識的一些項的子集。 這里需要注意的是,終止索引標識的項不包括在切片內。切片提供了一個與指向數組的動態窗口。 slice是可以看做是一個長度可變的數組。 slice數據結構如下: ~~~go type slice struct { array unsafe.Pointer len int cap int } ~~~ slice的結構體由3部分構成,Pointer 是指向一個數組的指針,len 代表當前切片的長度,cap 是當前切片的容量。cap 總是大于等于 len 的。 通常我們在對slice進行append等操作時,可能會造成slice的自動擴容。 其擴容時的大小增長規則是: * 如果切片的容量小于1024個元素,那么擴容的時候slice的cap就翻番,乘以2;一旦元素個數超過1024個元素,增長因子就變成1.25,即每次增加原來容量的四分之一。 * 如果擴容之后,還沒有觸及原數組的容量,那么,切片中的指針指向的位置,就還是原數組,如果擴容之后,超過了原數組的容量,那么,Go就會開辟一塊新的內存,把原來的值拷貝過來,這種情況絲毫不會影響到原數組。 通過slice源碼可以看到,append的實現只是簡單的在內存中將舊slice復制給新slice. ~~~go newcap := old.cap if newcap+newcap < cap { newcap = cap } else { for { if old.len < 1024 { newcap += newcap } else { newcap += newcap / 4 } if newcap >= cap { break } } } ~~~
                  <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>

                              哎呀哎呀视频在线观看