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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] >[success] ## **1:基本介紹** 1)切片的英文是slice 2)切片是數組的一個引用,因此切片是引用類型,在進行傳遞時,遵守引用傳遞的機制。 3)切片的使用和數組類似,遍歷切片、訪問切片的元素和求切片長度len(slice)都一樣 4)切片的長度是可以變化的,因此切片是一個可以動態變化數組。 5)切片定義的基本語法: var變量名[ ]類型 比如: var[ ] int >[success] ## **2:入門案例** ![](https://img.kancloud.cn/67/a3/67a3ab13800017c7ee3a6dd15a3f6f14_1280x349.png) >[success] ## **3:切片在內存中的形式** ![](https://img.kancloud.cn/dd/66/dd665893bebae5f257e6a65d9b0a27d5_1280x535.png) >[success] ## **4:切片的使用** 1. 方式1,上面寫過 2. 方式2:通過make來創建切片, 基本語法:var 切片名 []type = make([ ]type,len,[cap]) 參數說明:type就是數據類型,len:大小,cap:指定切片 **容量**可選 案例演練: ![](https://img.kancloud.cn/39/68/3968541a3e7da98286b5ca88502a4dde_1280x517.png) 3. 定義一個切片,直接就指定具體數組,使用原理類似make的方式。 ![](https://img.kancloud.cn/11/21/1121e0cc3fa842991def2a673c73a236_1280x402.png) >[success] ## **5:切片的遍歷** 如下兩種遍歷方式: ![](https://img.kancloud.cn/7b/e7/7be7823d17cd1ba352e72f1f9fd5cd0c_1280x683.png) ![](https://img.kancloud.cn/6c/83/6c83c70353499a50b2e512bf3d208aed_1280x566.png) >[success] ## **6:切片注意事項與細節** 1)切片初始化時var slice = arr[startIndex:endIndex] 說明:從arr數組 下標為startIndex,取到下標為endIndex的元素(不含arr[endIndex])。 2)切片初始化時,仍然不能越界。范圍在[0-len(arr)] 之間,但是可以動態增長. (2.1)var slice = arr[0:end]可以簡寫var slice = arr[:end] ![](https://img.kancloud.cn/3a/85/3a859539f988e742d45c30e6286238cb_1280x438.png) (2.2) var slice = arr[start:len(arr)]可以簡寫: var slice = arr[start:] ![](https://img.kancloud.cn/cb/c4/cbc403660b3a6661c5e32a00e81e6868_1280x312.png) (2.3) var slice = arr[0:len(arr)]可以簡寫: var slice = arr[:] ![](https://img.kancloud.cn/8c/39/8c39c6737e6939455f8fab2f7faee05b_1280x320.png) 3)cap是一個內置函數,用于統計切片的容量,即最大可以存放多少個元素。 4)**切片定義完后,還不能使用,因為本身是一個空的,需要讓其引用到一個數組或者make-一個空間供切片來使用** <br> <br> 5)切片可以繼續切片 ![](https://img.kancloud.cn/40/e9/40e9fc31d0cd1afabe0ff4f769a0928e_1280x474.png) 6)如果切片改變了數組的元素(值)那么整個數組會發生變化,案例如下 因為切片指向的空間和數組本身的空間是一個地址,所以發生了變化 ![](https://img.kancloud.cn/19/ba/19ba6621fc7976a6929a940c0cb32c73_1280x517.png) >[success] ## **7 : append函數** 1)動態追加元素,一個或多個 ![](https://img.kancloud.cn/b9/20/b920165668f6ffe228b1b8c5aa247d3f_1280x421.png) **切片append操作的底層原理分析:** 2)切片append操作的本質就是對數組擴容 3)go底層會創建一下新的數組newArr(安裝擴容后大小 4)將slice原來包含的元素拷貝到新的數組newArr 5)slice重新引用到newArr 6)注意newArr是在底層來維護的,程序員不可見. 7)案例演示說明 >[success] ## **8:copy操作** **切片的拷貝操作** **注意:只有切片類型才有拷貝** ![](https://img.kancloud.cn/da/22/da225f4ba621cb221298dbbb6f0c2ad3_1280x615.png) **對上面代碼說明:** 1)copy(para1, para2)參數的數據類型是切片 2)按照上面的代碼來看,arr和slice的數據空間是獨立,,相互不影響,也就是說arr[0]= 999,slice[0]仍然是1 **拷貝細節** 下面代碼會報錯嗎?可以編譯通過嗎?為什么? ![](https://img.kancloud.cn/47/7a/477aaf0fecb10d364f2431d44c0af8e3_1280x465.png) 答:可以編譯成功不會報錯 ,因為如果切片的容量不夠切不會繼續往下切,只會切有容量可以裝下的元素 ![](https://img.kancloud.cn/da/ab/daab812c72715fb023df45f779835cfb_1280x179.png) >[success] ## **9:string和slice** 1)string底層是一個byte數組,因此string也可以進行切片處理 ?----案例演示: ![](https://img.kancloud.cn/21/bc/21bc9a7a064b7017ce458df626067c0e_1280x400.png) 2)string是不可變的,也就說不能通過str[0]= 'z'方式來修改字符串(會報錯) 3)如果需要修改字符串可以先將string -> []byte(切片) 或者[ ]rune(切片) ->修改->重寫轉成string ![](https://img.kancloud.cn/15/61/1561990425cdd90e77d4e298c4cd15e2_1280x367.png) 注意:轉換成[]byte后, 可以出來英文,和數字,但是不能處理中文 因為,[ ]byte字節來處理,而一個漢字,是3個字符,因此將會出現亂碼 **解決方法是:string轉成[ ]rune,因為[ ]rune是按照字符處理,兼容漢字** ![](https://img.kancloud.cn/e8/e9/e8e91c3c66a671efafa695d890595902_1280x419.png)
                  <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>

                              哎呀哎呀视频在线观看