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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 數組與切片 * * * * * --: 作者:Mick 時間:2018年9月1日 * * * * * :-: **數組** * * * * * #### 數組的定義 數組是一個長度固定類型一致的值數據類型 #### 數組的聲明 第一種 Var關鍵字聲明0值初始化 var arr [n]type // n表示數組的長度無符號整形或 ... ,type表示存儲任意類型的元素 var arr [10]int // 聲明了一個int類型的數組,全部0填充 arr[0] = 42 // 數組下標是從0開始的 arr[1] = 13 // 賦值操作 * * * * * 第二種 數組字面量聲明并初始化 arr1 := [5]int{1,2,3} // 最常用 arr2 := [...]int{1,2,3} // 可以省略長度而采用`...`的方式,自動計算填充 arr3 := [...]int{100:100} //索引為99的值是100,其余值是默認值0 arr4 := *[3]int{1,2,3} //指針數組共享值 arr5 := [2][4]int{{1,2,3,4},{5,6,7,8}} //二維數組,2行3列 ![](https://box.kancloud.cn/67f730292dfde98b6889029cf83ec7d8_545x190.png) #### 數組的遍歷 func main(){ arr1 := [5]int{0:0,1:1,2:2} PrintPArr(arr1) fmt.Println(arr1) } func PrintPArr(arr1 [5]int){ for k,v := range arr1{ fmt.Println(k," => ",v) arr1[k] = k } } //思考值數組 arr1 [5]int 換成 指針數組arr1 *[5]int #### 數組的總結 長度是數組類型的一部分[1]int 與 [2]int 是不同類型 數組是值拷貝 func printValue(arr [5]int) 與 func printValue(arr *[5]int) **問題1:如果我不知道數組的長度怎們辦 問題2:如果我想改變數組的長度怎么辦** :-: **切片** * * * * * #### 切片的定義 切片是一個長度不定類型一致的引用數據類型,底層指向數組的第一個元素 可以按需自動增長和縮小,slice總是指向一個底層array #### 切片的聲明 第一種 Var關鍵字聲明0值初始化 var s []type // 中括號為空,type表示存儲任意類型的元素 var s []int // 和聲明array一樣,只是少了長度 s[0] = 0 // 索引從0開始 * * * * * 第二種 切片字面量聲明并初始化 s1 := []byte {'a', 'b', 'c', 'd'} * * * * * 第3種 使用make函數創建 s := make([]int,10) // []int 表示創建的類型,10 表示容量 * * * * * #### 切片結構 * * * * * ![](https://box.kancloud.cn/230d6592abb9fc32f8469a30e46ebb4a_675x339.png) * * * * * // 從array 或 slice 中獲取 slice array[i,j] // i 開始索引 , j 結束索引 , 范圍 [i,j) * 省略開始索引 ar[:n] =》 ar[0:n] * 省略結束索引 ar[n:] =》 ar[n:len(ar)] * 省略前后索引 ar[:] =》ar[0:len(ar)] * append函數用于切片末尾追加 * len計算切片的長度 * cap計算切片的容量 slice := []int{10,20,30,40,50} // len=4, cap=4 newSlice := slice[1:3] newSlice = append(newSlice,60) fmt.Println (slice,newSlice) fmt.Println(len(slice),cap(newSlice)) * * * * * 思考題 * 什么是切片的長度, 怎么計算 * 什么是切片的容量,怎么計算 slice對應數組的信息,i 起始位置, j 結束位置, k 數組長度 len 獲取slice的長度, j - i cap 獲取slice的最大容量, k - i * * * * * 思考題 * 切片如何擴容,怎么追加或刪除元素 * 切片的長度與容量計算方式 * * * * * ![](https://box.kancloud.cn/473b1e9bc30637ba5ddd664bbf801316_426x374.png) #### 切片擴容深入 1: 什么時候回擴容 append 向slice里面追加一個或者多個元素的時候 * 如果 len(切片長度) > cap(原有的容量) 則切片會進行擴容 * 此切片的底層數據會copy原有的數組,然后進行追加,不影響原有的數組 2: 擴容的規則 * 元素個數 <= 1024 ,容量是2倍增長 * 元素個數 > 1024 , 容量是1.25倍增長 slice := []int{10,20,30,40} // len=5, cap=5 newSlice := append(slice,50) fmt.Println(slice,newSlice) #### 舉例驗證 * 數組是值類型 * 切片是引用類型
                  <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>

                              哎呀哎呀视频在线观看